공부/Spring

Spring @Profile 로 환경에 따라 다르게 설정하기 (+ @ActiveProfiles 로 테스트 하기)

2021. 1. 8. 09:29

@Profile

환경에 따라 다르게 동작해야 하는 경우가 있다.

이 때 @Profile이라는 어노테이션을 활용하면 간편하게 적용이 가능하다.

 

먼저 product, development, test 환경이 있고

각각의 환경에서 발송 기능 사용시 다르게 동작해야 한다고 하자.

 

먼저 발송하는 곳 소스이다.

발송하는 곳에서 환경에 따라 분기가 되는 것은 적합하지 않다고 생각한다.

그래서 저 Sender 객체를 생성하는 곳에서 분기가 되어야 한다.

그 과정에서 @Profile을 사용한다.

위 코드만 봐도 @Profile이 어떻게 사용되는지 대충 알 수 있다.

복수도 지원하고 산술연산자도 지원한다.

 

어플리케이션 실행 시 각각의 profile에 따라 다른 값이 빈이 동작하는 것을 확인 할 수 있다.

 

@ActiveProfiles

각각의 환경 마다 테스트를 해야할 때는 @ActiveProfiles 어노테이션을 사용하면 된다.

 

테스트 클래스에 @ActiveProfiles("development") 라고 작성하게 되면, 해당 클래스는 profile이 development인 채로 테스트 하게 된다.

 

이렇게 각각의 profile에 대하여 테스트가 가능하다.

 

예제 소스는 아래 주소에서 확인이 가능합니다.

github.com/ByeongUkChoi/blog-code/tree/main/profile-example

 

 

 

 

반응형