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) 메서드를 호출해준다.