- 지금까지 우리는 스프링 컨테이너에 스프링 빈(Bean)을 등록하는 2가지 방법을 모두 다룸
- 수동 :
AppConfig
에@Bean
을 사용해 빈 등록- 자동 :
Component Scan
+@Component
로 자동 빈 등록
- 2가지 방법에 대해 어떤 경우에 자동 / 수동이 적합할지에 대한 생각을 해야함
스프링 핵심원리 기본편
의김영한
님의 실무 운영 기준으로 작성!
- Application 개발을 할 때 크게 2가지 로직(업무 / 기술지원)으로 나눌 수 있다.
- 업무 로직
: 보통 비즈니스 요구사항을 개발할 때 추가되거나 변경되는 로직들!
- 개수가 많다. (기술 지원 로직 보다)
- 자동으로 빈을 등록하는 것이 좋다 (유사 패턴이 생기기 때문)
ex)
웹을 지원하는컨트롤러
비즈니스 로직이 있는서비스
실제 데이터 계층의 로직을 처리하는레포지토리
- 기술 지원 로직
: 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용하며, DB 연결이나 공통 로그 처럼 업무를 지원하기 위한 하부 기술이나 공통 기술과 관련된 로직
- 수가 적다 (업무 로직 보다)
- 애플리케이션 전반에 걸쳐 영향을 주는 경우가 많다
- 수동으로 빈을 등록하는 것이 좋다 (가시성, 유지보수성)
ex)
DataBase
연결
자동 방법을 기본으로 사용하자 !
- 스프링이 나오고 시간이 갈수록 점점
자동 빈 등록
을 선호하는 추세- 스프링부트는 기본적으로
@SpringBootApplication
내부에Component Scan
이 존재- 실제 개발할 때 관리해야 하는 빈(Bean)이 매우 많은데, 이를 수동으로 모두 하는것은 비효율적
자동 빈 등록
을 사용해도 충분히DIP / OCP
를 지킬 수 있음
수동 빈 등록은 언제 사용?
1)
기술 지원 로직
구현시
--> 프로젝트 전체에 영향을 주는 코드이며, 따로 관리하는 것이 유지보수에 용이2)
다형성을 적극 활용하는 비즈니스 로직
은 고민 해볼만 하다