@Profile을 이용해 환경에 맞는 bean을 등록하는 과정에 대해 궁금한 것이 있습니다.
안녕하세요. 항상 좋은 강의 올려주셔 감사합니다. 강의를 보며 @Profile으로 빈을 환경(로컬, 개발, 운영)에 따라 달리 등록하는 과정에 대해 궁금한 점이 생겨 질문 올립니다. 영한님은(약 1분36초 쯤) "로컬에서는 로직을 테스트하기 위해 빈을 등록한다." 라는 뉘앙스로 빈을 환경에 따라 달리 등록한다 말씀하셨는데 저는 "테스트 환경을 위해 빈을 등록한다"는 느낌을 받았습니다. 저는 과거 클린코드에 대해 공부하며 테스트를 위한 코드와 실제 비즈니스 로직이 담긴 코드는 서로 분리하는 것이 좋다고 배웠습니다. 이러한 관점에서 보았을때 LocalPayClient와 payConfig에서 localPayClient() 메서드는 @Slf4j
@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();
}
} 테스트를 위한 코드라 생각이 들며 결과적으로 pay디렉토리 내부에 테스트를 위한 객체와 실제 비즈니스를 위한 객체가 섞여 어색하다는 느낌을 받았습니다. 혹시 이에 대해서 어떻게 생각하시는지 궁금합니다! 안정적인 테스트를 위해 어쩔수 없이 희생해야 하는 부분일까요?