728x90
@Component, @Controller, @Service, @Repository 등을 통해 자동으로 스캔하면 굉장히 간단하다.
수동으로 bean 등록을 진행하면 @Configuration 설정 정보 class에서 @Bean을 적고 객체 생성과 주입 대상을 일일이 적어주어야 하기 때문에 번거롭다.
추후에 관리할 빈이 많아서 설정 정보가 커지면 정보를 관리하는 것 자체가 부담이 된다. (유지 보수에 부담)
자동빈을 사용하면 OCP, DIP 같은 객체 지향 원칙을 지킬 수 없나?
그것도 아니다. 잘 지킬 수 있다.
그럼 수동빈을 굳이 사용하는 이유는 무엇인가?
애플리케이션은 크게 업무로직과 기술 지원 로직으로 나눌 수 있다.
업무 로직은 컨트롤러, 서비스, 레포지토리 등을 의미한다.
기술 지원 로직은 말그대로 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용됨.
예를 들어 데이터 베이스 연결, 공통 로그 처리 등등이 있다.
업무 로직 같은 경우는 문제가 발생하면 어디가 문제인지 명확하게 보이지만
기술 지원 로직 같은 경우는 적용이 잘 되고 있는지 파악하기 어려운 경우가 많다.
그래서 기술 지원 로직은 가급적 수동 빈 등록을 통해 명확하게 드러내야한다.
이외에 어떤 경우들이 있을까?
직접 등록하는 기술 지원 객체는 수동 등록
다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민해보자
728x90
'Spring Boot 개념 정리' 카테고리의 다른 글
빈 스코프 핵심 내용 이해하기 (0) | 2023.02.19 |
---|---|
빈 생명주기 콜백 핵심 내용 이해하기 (0) | 2023.02.19 |
너무 복잡한 @Service 코드 리팩토링 해보기 (0) | 2023.02.18 |
abstract와 interface의 공통점, 차이점 이해하기 (0) | 2023.02.17 |
@ComponentScan 개념 이해하기 (0) | 2023.02.16 |