예를 들어 특정 운영 환경, dev 에서만 사용하기를 원하는 설정이 있을 수 있습니다.
이럴 때 해당 설정 클래스가 내가 지정한 환경에서만 활성화 되도록 설정할 수 있다. 이를 위해 @Profile을 설정합니다.
@Profile("dev")
public class DevConfig {}
따라서 위 DevConfig 파일의 설정들은 현재의 프로파일(환경)이 "dev" 경우에만 활성화 되어 사용됩니다.
나머지 test, prod 에서는 작동하지 않습니다. 즉, 내가 원하는 환경에서만 해당 설정이 동작하도록 하는 것 이죠.
또한 다음과 같이 사용할수도 있습니다.
@Profile("!dev")
public class NotDevConfig {}
위와같이 부정표현(!)을 추가한경우 "dev"가 아닌, 즉 test, prod에서만 작동하게 됩니다.
Spring 에서는 현재의 실행 프로파일(환경)을 지정하도록 도와주는 애노테이션 입니다.
즉, 내가 원하는 환경을 선택하여 실행하는 것 이죠.
예를 들어 테스트 환경에서는 현재의 프로파일을 test로 설정해주어야 하는데, 다음과 같이 @ActiveProfiles를 설정해주면 해당 프로파일로 환경을 설정하면서 스프링 컨테이너가 실행됩니다.
@ActiveProfiles("test")
public class SomethingTestConfig {}