Today I Learned_220801
Spring Framework
자동 빈 등록 vs. 수동 빈 등록
자동 빈 등록 : autowired, component scan
수동 빈 등록 : @Bean, config file
웬만한 경우에는 자동 빈 등록을 사용하자 -> 스프링 부트가 지원을 잘 해주고 있으며, 설정 정보가 커지면 관리가 어렵다. 그리고 자동 빈 등록으로도 OCP, DIP를 지킬 수 있기 때문
수동 빈 등록을 사용하는 경우
업무 로직 빈 : 컨트롤러, 비즈니스 로직, DAO -> 유사한 패턴을 가지고 있고, 문제가 발생해도 어떤 곳에서 문제가 발생했는지 파악하기 쉬우므로 자동 등록 사용.
기술 지원 빈 : 기술적인 문제나 AOP 처리 시 사용. 데이터베이스 연결, 로그, 트랜잭션 -> 애플리케이션 전반에 걸쳐 광범위하게 적용되고 있으므로 문제가 생겼을 때 파악하기 어려우므로 수동 빈 등록을 통해 명확하게 표시하자.
비즈니스 로직(업무 로직 빈)임에도 수동 빈 등록이 유리한 경우 -> 다형성을 활용할 때.
한 눈에 보는 것이 유지보수측면에서 더 좋을 때는 수동 빈 등록을 사용하기도 한다. 수동 빈 등록이 어려울 때에는 구현체들만 따로 모아서 특정 패키지에 넣는 방법으로 사용.
스프링/스프링 부트가 자동으로 등록하는 빈들은 의도에 맞게 동작하게끔, 자동으로 등록되게 놔두자.