BackEnd/Spring

[Spring] @Profile과 @ActiveProfiles 를 통한 활성 프로파일(Profile)의 관리

샤아이인 2022. 8. 23.

 

개발을 진행하다보면 환경설정 파일들을 분리하거나, 가져와야하는 경우가 많다. 이에 대하여 알아보자.

 

우선 활성프로필에 대하여 잠시 알아봅시다.

 

▶ 활성 프로파일

활성 프로파일이란 스프링 컨테이너를 실행할 때 실행 환경을 지정해주는 속성으로, 환경을 구분하기 위해 사용된다.

 

프로파일은 JVM의 옵션으로도 설정을 할 수 있고, 스프링에서도 설정을 할 수 있다.

JVM 옵션으로 프로파일을 설정하기 위해서는 다음처럼 옵션을 지정해줄 수 있다.

-Dspring.profiles.active=dev

 

 

우리에게 주어진 활성 프로필이 test, prod, dev 과 같이 3개의 환경이 있다고 생각해보자.

 

1. @Profile 을 통한 특정 Profile에 활성화 시키기

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

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

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

 

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

나머지 test, prod 에서는 작동하지 않는다.

 

즉, 내가 원하는 환경에서만 해당 설정이 동작하도록 하는 것 이다.

 

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

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

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

 

2. @ActiveProfiles 를 통한 활성 프로파일 지정하기

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

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

 

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

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

 

댓글