Terminal 실행 1) brew update brew update 2) rabbitmq 설치 brew install rabbitmq 설치 완료 후 설치 경로로 폴더 확인 /usr/local/sbin RabbitMQ 실행 ./rabbitmq-server 접속 확인 127.0.0.1:15672 접속 후, 로그인시 UserId, Password를 아래와 같이 입력해준다. - UserID : guest - Password : guest
Read moretestconfig-{profiles} 의 yml 파일 생성하기 testconfig.yml test: message: default yml testconfig-dev.yml test: message: dev yml testconfig-prod.yml test: message: prod yml 위 파일들은 로컬 컴퓨터에 특정 폴더 안에 생성되어 있을 것이다. 해당 파일들을 git repository 에 push 한다. (예상 경로 : https://github.com/seohae/microservice-config) Config 관리 프로젝트 생성 1) SpringBoot 프로젝트를 생성하였다. ConfigApplication.java 파일 안에 아래 코드를 추가하여 Config Server로 등록하자. ..
Read more기존 코드 관리 보통 프로젝트를 진행하면서, 관리되는 코드 등은 static final 변수로 선언되어있다. public class CommonStatus { public static final int CODE = 200; public static final String MESSAGE = "성공"; } static final 변수를 Enum 으로 변환해보자. Enum.java public enum EnumCode { /** Default Code */ MESSAGE ("성공") ; @Getter private final String code; EnumCode(String code) { this.code = code; } } 호출 코드 TestDto testDto = new TestDto(); testDt..
Read more특정날짜와 format을 파라미터로 설정하여 해당 format에 맞게 어제 일자 조회 public static String getYesterday(String paramDate, String format) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); LocalDate currentDate = LocalDate.parse(paramDate, formatter); return currentDate.minusDays(1).format(formatter); }
Read more현재날짜(LocalDate.now())가 올해의 몇번째 주차인지 조회 public static String getWeekOfYear() { LocalDate currentDate = LocalDate.now(); int weekOfYear = currentDate.get(WeekFields.ISO.weekOfYear()); return Integer.toString(weekOfYear); }
Read more1) pom.xml 추가 org.modelmapper modelmapper 2.3.8 2) ModelMapper 사용 UserEntity.java @Setter @Getter @Entity @Table(name = "users") public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idx; @Column(nullable = false, length = 50) private String userId; @Column(nullable = false, length = 50) private String userName; } UserDto.java @Data public class UserDto {..
Read more1) pom.xml org.springframework.cloud spring-cloud-starter-netflix-eureka-server 2) EurekaServerApplication.java @EnableEurekaServer /* Eureka 사용을 위한 선언 (Eureka 서버 역할로 등록) */ 위 코드를 추가하여 해당 서비스가 Eureka 서버 역할을 할 것임을 지정하자. 3) application.yml server: port: 8761 # Eureka Web Service 포트번호 spring: application: name: eurekaserver # 서비스명 eureka: # Eureka 라이브러리가 포함된채 부트가 실행되면 유레카 클라이언트 역할로써 어딘가에다 유레카를 등록한다..
Read moreDocker 이미지 설치 1) Kafka 설치 docker pull wurstmeister/kafka 2) zookeeper 설치 docker pull wurstmeister/zookeeper docker-compose 파일 생성 1) docker-compose.yml 파일 생성 (local PC에 경로는 자유롭게 파일 생성) version: '2' services: zookeeper: image: wurstmeister/zookeeper container_name: zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka container_name: kafka ports: - "9092:9092" environment: KAFKA_ADVERTIS..
Read more설정 1) build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 2) @Valid 어노테이션 추가 /** * 회원 등록 * @param memberDto * @return */ @PostMapping("") public ResponseEntity addMember(@ModelAttribute @Valid MemberDto memberDto) { /* 패스워드 암호화 */ memberDto.setMemberPwd(passwordEncoding.encode(memberDto.getMemberPwd())); Member member = memberService.addMember(memberDto);..
Read more구현 1) build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security:2.4.2' 2) CommonEncoder.java 생성 @Component public class CommonEncoder implements PasswordEncoder { private final PasswordEncoder passwordEncoder; public CommonEncoder() { this.passwordEncoder = new BCryptPasswordEncoder(); } public CommonEncoder(PasswordEncoder passwordEncoder) { this.passwordEncoder ..
Read more기본제공 findById(PK) 메소드 public Optional getMember(Long idx) { return memberRepository.findById(idx); } JPA에서 ID값을 파라미터로 SELECT 할 수 있는 기본 findById 메소드를 제공한다. 하지만 ID 필드가 아닌 다른 여러 필드들로도 데이터를 조회할 경우가 생기게된다. 상황 로그인 API를 구현하면서 파라미터로 받아온 아이디와 패스워드에 맞는 회원 정보가 있는지 조회해야하는 상황이 생겼다. 1) AuthController.java @PostMapping("/login") public ResponseEntity login(@ModelAttribute LoginDto loginDto, @ApiParam(hidden = ..
Read more상황 SpringBoot 프로젝트를 진행하면서 로그인/로그아웃 API를 개발할 단계가 되었다. SpringBoot 프레임워크 프로젝트에 세션 관리를 Redis로 진행해보자. Redis 설치 우선 프로젝트가 Redis를 연동할 수 있도록 Redis를 설치해야한다. docker에 redis를 간단하게 설치하였다. docker redis 설치 포스팅 : devfunny.tistory.com/424?category=820624 docker로 redis 설치 (with docker-compose) Redis 이미지 설치 docker pull redis docker-compose 파일 생성 version: '3.0' services: redis1: image: redis command: redis-server --..
Read moreRedis 이미지 설치 docker pull redis docker-compose 파일 생성 version: '3.0' services: redis1: image: redis command: redis-server --requirepass root --port 6379 restart: always ports: - 6379:6379 1) requirepass redis 접속시 패스워드(password)를 설정하는 방법이다. docker-compose 파일 실행 1) 로컬PC에 이전에 생성한 docker-compose 파일의 위치로 이동 cd 경로 2) docker-compose 실행 docker-compose -f docker-compose.yml up Redis-cli 접속하여 명령어 실행 1) redi..
Read more들어가기 전 Lombok을 사용하여 구현하기 전, 라이브러리를 사용하지 않고도 구현할 줄 알아야한다. 아래 포스팅을 참고하자. devfunny.tistory.com/409 [SpringBoot + JPA] DTO, Entity의 빌더패턴 적용기 도입 스프링부트 프로젝트에서 JPA를 사용하여 API를 만드는 상황에 놓였다. 나는 API의 파라미터로 받아올 Dto 파일을 생성하였고, JPA Repository로 보낼 Entity 파일을 생성하였다. com.api.seohae - dto U devfunny.tistory.com 도입 스프링부트 프로젝트에서 JPA를 사용하여 API를 만드는 상황에 놓였다. 나는 API의 파라미터로 받아올 DTO 파일을 생성하였고, JPA Repository로 보낼 Entity ..
Read moreJPA JPA : Java Persistence API 자바 진영의 ORM 기술 표준이다. JPA를 알아보기전에 ORM과 ORM 프레임워크에 대해 알아보자. ORM ORM : Object Relational Mapping 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크 ORM 프레임워크를 사용함으로써 그동안 개발해왔던 INSERT/UPDATE/SELECT 쿼리 등을 직접 작성하지 않고도 데이터를 저장할 수 있게되었고 우리는 객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 쿼리 작성 시의 일들을 수행할 수 있게 되었다. ORM 프레임워크에 저장된 객체들은 ORM 프레임워크가 적절한 SQL을 생성해서 데이터베이스에 저장된다. ORM 프레임워크는 단순히 SQL을 생성해서 데이터베..
Read more