스프링 부트 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
목차
- 7.3.1. Adding Active Profiles
- 7.3.2. Profile Groups
- 7.3.3. Programmatically Setting Profiles
- 7.3.4. Profile-specific Configuration Files
7.3. Profiles
스프링 프로파일은 애플리케이션 설정 일부를 분리해서 특정 환경에서만 사용할 수 있게 해준다. 다음 예제와 같이 @Component
, @Configuration
, @ConfigurationProperties
를 @Profile
로 마킹하면 로드할 빈을 제한할 수 있다.
@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {
// ...
}
@ConfigurationProperties
빈을 자동 스캔 대신@EnableConfigurationProperties
를 통해 등록했다면@Profile
어노테이션은@EnableConfigurationProperties
어노테이션을 선언한@Configuration
클래스에 명시해야 한다.@ConfigurationProperties
를 스캔한다면@ConfigurationProperties
클래스 자체에@Profile
을 지정할 수 있다.
활성화할 프로파일은 Environment
프로퍼티 spring.profiles.active
로 지정할 수 있다. 이 프로퍼티를 지정할 땐 7장 앞부분에서 설명한 방법 중 어떤 방법을 사용해도 상관 없다. 예를 들어 다음 예제처럼 application.properties
에 넣을 수 있다:
spring.profiles.active=dev,hsqldb
spring:
profiles:
active: "dev,hsqldb"
커맨드라인에서 --spring.profiles.active=dev,hsqldb
를 스위치로 사용해서도 지정할 수 있다.
활성 프로파일이 없으면 디폴트 프로파일을 활성화한다. 디폴트 프로파일명은 default
이며, 다음 예제처럼 Environment
프로퍼티 spring.profiles.default
로 조정해도 된다:
spring.profiles.default=none
spring:
profiles:
default: "none"
7.3.1. Adding Active Profiles
spring.profiles.active
프로파일의 순서를 매길 때는 다른 프로퍼티에서와 동일하게 가장 우선 순위가 높은 PropertySource
가 이긴다. 다시말해 application.properties
에서 활성 프로파일을 지정했을 땐 커맨드라인 스위치로 덮어쓸 수 있다.
간혹 활성 프로파일를 대체해버리기보단 활성 프로파일에 프로퍼티를 추가하는 게 유용할 때가 있다. SpringApplication
엔트리 포인트에는 추가 프로파일을 설정할 수 있는 자바 API가 있다 (즉, spring.profiles.active
프로퍼티로 활성화한 프로파일 위에 추가). SpringApplication의 setAdditionalProfiles()
메소드를 참고해라. 다음 섹션에서 설명하는 프로파일 그룹을 활용할 수도 있는데, 이땐 주어진 프로파일이 활성 상태면 거기에 따라 미리 정의해둔 활성 프로파일들을 한 번에 추가할 수 있다.
7.3.2. Profile Groups
애플리케이션에서 정의하고 사용하는 프로파일이 지나치게 세분화되있으면 사용하기가 번거로워진다. 예를 들면 데이터베이스와 메세지 처리 기능을 독립적으로 활성화하기 위해 프로파일을 proddb
와 prodmq
로 세분화할 수 있다.
이럴 때를 위해 스프링 부트는 프로파일 그룹이란 걸 지원한다. 프로파일 그룹을 사용하면 관련 프로파일 그룹에 논리적인 이름을 붙일 수 있다.
예를 들어 proddb
와 prodmq
프로파일을 구성하는 그룹 production
을 만들 수 있다.
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
spring:
profiles:
group:
production:
- "proddb"
- "prodmq"
이제 이 애플리케이션을 --spring.profiles.active=production
을 사용해 시작하면 production
, proddb
, prodmq
프로파일을 한 방에 활성화한다.
7.3.3. Programmatically Setting Profiles
애플리케이션을 실행하기 전에 SpringApplication.setAdditionalProfiles(…)
를 호출하면 코드로 직접 활성 프로파일을 설정할 수 있다. 스프링의 ConfigurableEnvironment
인터페이스를 사용해도 프로파일을 활성화할 수 있다.
7.3.4. Profile-specific Configuration Files
application.properties
(또는 application.yml
) 파일과 @ConfigurationProperties
를 통해 참조하는 파일은 모두 프로파일 지정 버전 파일도 하나의 파일로 간주하고 로드한다. 자세한 내용은 “프로파일 전용 파일“을 참고해라.
Next :Logging
스프링 부트에서 로그를 설정하는 방법. 로그 포맷, 레벨, 파일 로깅, 로테이션, 로그 그룹, 프로파일 활용 방법 등을 다룹니다.
전체 목차는 여기에 있습니다.