토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 부트 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

목차


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에 넣을 수 있다:

properties yaml
spring.profiles.active=dev,hsqldb
spring:
  profiles:
    active: "dev,hsqldb"

커맨드라인에서 --spring.profiles.active=dev,hsqldb를 스위치로 사용해서도 지정할 수 있다.

활성 프로파일이 없으면 디폴트 프로파일을 활성화한다. 디폴트 프로파일명은 default이며, 다음 예제처럼 Environment 프로퍼티 spring.profiles.default로 조정해도 된다:

properties yaml
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 프로퍼티로 활성화한 프로파일 위에 추가). SpringApplicationsetAdditionalProfiles() 메소드를 참고해라. 다음 섹션에서 설명하는 프로파일 그룹을 활용할 수도 있는데, 이땐 주어진 프로파일이 활성 상태면 거기에 따라 미리 정의해둔 활성 프로파일들을 한 번에 추가할 수 있다.

7.3.2. Profile Groups

애플리케이션에서 정의하고 사용하는 프로파일이 지나치게 세분화되있으면 사용하기가 번거로워진다. 예를 들면 데이터베이스와 메세지 처리 기능을 독립적으로 활성화하기 위해 프로파일을 proddbprodmq로 세분화할 수 있다.

이럴 때를 위해 스프링 부트는 프로파일 그룹이란 걸 지원한다. 프로파일 그룹을 사용하면 관련 프로파일 그룹에 논리적인 이름을 붙일 수 있다.

예를 들어 proddbprodmq 프로파일을 구성하는 그룹 production을 만들 수 있다.

properties yaml
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를 통해 참조하는 파일은 모두 프로파일 지정 버전 파일도 하나의 파일로 간주하고 로드한다. 자세한 내용은 “프로파일 전용 파일“을 참고해라.


전체 목차는 여기에 있습니다.

<< >>

TOP