@Profile

예를 들어 특정 운영 환경, dev 에서만 사용하기를 원하는 설정이 있을 수 있습니다.

이럴 때 해당 설정 클래스가 내가 지정한 환경에서만 활성화 되도록 설정할 수 있다. 이를 위해 @Profile을 설정합니다.

@Profile("dev")
public class DevConfig {}

따라서 위 DevConfig 파일의 설정들은 현재의 프로파일(환경)이 "dev" 경우에만 활성화 되어 사용됩니다.

나머지 test, prod 에서는 작동하지 않습니다. 즉, 내가 원하는 환경에서만 해당 설정이 동작하도록 하는 것 이죠.

또한 다음과 같이 사용할수도 있습니다.

@Profile("!dev")
public class NotDevConfig {}

위와같이 부정표현(!)을 추가한경우 "dev"가 아닌, 즉 test, prod에서만 작동하게 됩니다.

@ActiveProfiles

Spring 에서는 현재의 실행 프로파일(환경)을 지정하도록 도와주는 애노테이션 입니다.

즉, 내가 원하는 환경을 선택하여 실행하는 것 이죠.

예를 들어 테스트 환경에서는 현재의 프로파일을 test로 설정해주어야 하는데, 다음과 같이 @ActiveProfiles를 설정해주면 해당 프로파일로 환경을 설정하면서 스프링 컨테이너가 실행됩니다.

@ActiveProfiles("test")
public class SomethingTestConfig {}