자동 등록 선호

- 스프링 부트는 컴포넌트 스캔을 기본으로 사용

- 스프링 MVC패턴에서 @Controller, @Service, @Repository 사용

- @Bean을 하나하나 만드는 것보다 @Component만 작성하는 것이 훨씬 간편

- OCP, DIP 준수 가능

 

 

수동 등록을 사용하면 좋은 경우

- 애플리케이션의 컨트롤러, 서비스, 리포지토리와 같은 업무 로직은 자동 등록을 사용

 

1) 업무 로직 외에 DB커넥션, Transaction설정, 공통 Log, 외부 라이브러리 연동과 같은 기술 지원 빈들은 개수가 적기 때문에 수동 등록으로 하여 업무 로직과 분리하여 관리하면 좋음

 

2) 의존관계 주입 중 조회한 빈이 모두 필요한 경우 List, Map을 사용하는데, 이에 해당하는 빈들은 하나에 모아서 @Bean으로 수동 등록하면 한 번에 보고 이해가 쉬움 (or 동일 패키지에 두고 자동 등록)

@Configuration
public class AppConfig {
   
    @Bean
    public DiscountPolicy rateDiscountPolicy(){
        return new RateDiscountPolicy();        
    }
    
    @Bean
    public DiscountPolicy fixDiscountPolicy(){
        return new FixDiscountPolicy()
    }

}