[Spring] @Profile - 각 환경마다 서로 다른 빈 등록

스프링에서 각 환경마다 서로 다른 설정 값을 사용하도록 "프로필" 기능을 지원한다.

그런데 설정 값 뿐만 아니라 각 환경마다 서로 다른 빈을 등록해야할 경우가 있을 수도 있다.

예를 들어서 결제 기능을 붙여야 하는데, 로컬 개발 환경에서는 실제 결제가 발생하면 문제가 되니 가짜 결제 기능이 있는 스프링 빈을 등록하고

운영 환경에서는 실제 결제 기능을 제공하는 스프링 빈을 등록한다고 가정해보자.

 

@Profile 을 사용하여 아래처럼 등록되는 스프링 빈도 분리할 수 있다.

@Slf4j
@Configuration
public class PayConfig {

    @Bean
    @Profile("default") // 기본값 프로필일 경우 이 빈이 등록
    public LocalPayClient localPayClient() {
        log.info("LocalPayClient 빈 등록");
        return new LocalPayClient();
    }

    @Bean
    @Profile("prod") // prod 프로이 활성화 될 경우 이 빈이 등록
    public ProdPayClient prodPayClient() {
        log.info("ProdPayClient 빈 등록");
        return new ProdPayClient();
    }
}

 


참고자료 : 김영한의 스프링 부트 핵심 원리