Develop/Spring

Spring Boot 프로젝트에서 환경에 따라 다른 Profile 등록하기

코딩의성지 2021. 7. 9. 18:23

하이... 오늘은 실무에서 일하시는 분들이라면 알면 좋은 내용에 대해 작성해보려고 한다.

 

혼자 개발하는 개발자라면 상관없겠지만, 실무에서는 보통

로컬 환경, 개발 환경, 테스트 환경 , 운영 환경 다양한 환경에서 프로젝트를 수행한다.

 

Spring Boot 를 이용하는 개발자들이라면 다들 아시겠지만

application.yml 파일에 설정을 별도로 해주어 이런 환경 구분이 가능하다.

 

 

일단 test 전용으로 yml 파일도 하나 복사해서 만들어주자.

 

그리고 내부에 test > resources 디렉토리에 있는 yml 에는

`````

spring:
  profiles:
    active: test
   

`````

를 추가해주고,  main > resources 에는

`````

spring:
  profiles:
    active: local
   

`````

이렇게 추가해주자.  보통 local, dev, test, onl 이런식으로 나눠준다.

 

그리고 이제 @Profile 어노테이션을 이용해서 특정한 환경에서만 구동되는 로직을 작성할 수 있다.

 

예를 들어서 내가 local 환경에서 테스트를 위해서 임시 데이터를 넣는 로직이 필요하다고 가정하자.

@Profile("local")
@Component
@RequiredArgsConstructor
public class InitData {
    private final InitDataService initDataService;

    @PostConstruct
    public void init() {
        initDataService.init();
    }
    
    @Component
    static class InitDataService{

       ````
        @Transactional
        public void init() {
			//임시 데이터 입력 
        }
        `````
    }
}

이제 이런식으로 클래스를 하나 만들고 , Spring Boot를 실행 하면 local 환경에서는 저 데이터 초기화 하는 로직이 돌게 되는 것이다.

 

끝.

반응형