더북(TheBook)

3.2.3 프로파일 구성

애플리케이션을 환경이 서로 다른 런타임에 배포할 때 보통 몇몇 세부 구성은 다를 수 있다. 예를 들어 데이터베이스 커넥션의 세부 사항은 개발 환경과 QA(Quality Assurance)(품질 보증) 환경에서 서로 다를 수 있으며, 출시 환경에서도 다를 수 있다. 스프링 프레임워크는 스프링 3.1에서 프로파일 기반 구성(Profile-based Configuration)을 지원했다. 프로파일은 다른 빈이나 구성 클래스를 런타임에 활성화된 프로파일을 기반으로 사용하거나 무시하는 조건부 구성 타입이다.

예를 들어 코드 3-1에서 만든 보안 구성의 목적은 제품 출시 환경에서 사용하는 것이지만, 개발 환경에서는 자동으로 구성된 보안 구성이면 충분할 것이다. 이때는 SecurityConfig@Profile 애너테이션을 붙이면 된다.


@Profile("production")
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    ...
}

@Profile 애너테이션은 production 프로파일을 런타임에서 활성화했을 때만 해당 구성을 적용한다. production 프로파일이 활성화되지 않을 때는 이 설정을 무시하고, 오버라이드된 보안 구성이 없으므로 자동으로 구성된 보안 구성을 적용할 것이다.

프로파일은 여느 구성 프로퍼티를 설정하듯이 spring.profiles.active 프로퍼티를 설정하여 활성화할 수 있다. 예를 들어 다음과 같이 명령줄에서 애플리케이션을 실행하여 production 프로파일을 활성화할 수 있다.

$ java -jar build/libs/readinglist-0.0.1-SNAPSHOT.jar --spring.profiles.active=production
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.