흰 스타렉스에서 내가 내리지

각 환경마다 서로 다른 빈 등록 - @Profile 본문

Spring

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

주씨. 2023. 12. 16. 21:35
728x90

설정값이 아니라 각 환경마다 서로 다른 빈을 등록해야 한다면? 

@Configuration
public class PayConfig {
    @Bean
    @Profile("default")
    public LocalPayClient localPayClient(){
        log.info("LocalPayClient 빈 등록");
        return new LocalPayClient();
    }

    @Bean
    @Profile("prod")
    public ProdPayClient prodPayClient(){
        log.info("ProdPayClient 빈 등록");
        return new ProdPayClient();
    }
}

 

@Profile 애노테이션을 사용하면 해당 프로필이 활성화된 경우에만 빈을 등록한다. 

 

 

 

@Component
@RequiredArgsConstructor
public class OrderRunner implements ApplicationRunner {

    private final OrderService orderService;

    @Override
    public void run(ApplicationArguments args) throws Exception{
        orderService.order(1000);
    }
}

- ApplicationRunner 인터페이스를 사용하면 스프링은 빈 초기화가 모두 끝나고 애플리케이션 로딩이 완료되는 시점에 run(args) 메서드를 호출해준다.