본문 바로가기
Spring Boot 개념 정리

자동 bean 등록, 수동 bean 등록 어떤 경우에 하는게 좋을까?

by 반오십 코린이 2023. 2. 19.
728x90

@Component, @Controller, @Service, @Repository 등을 통해 자동으로 스캔하면 굉장히 간단하다.

 

수동으로 bean 등록을 진행하면 @Configuration 설정 정보 class에서 @Bean을 적고 객체 생성과 주입 대상을 일일이 적어주어야 하기 때문에 번거롭다.

추후에 관리할 빈이 많아서 설정 정보가 커지면 정보를 관리하는 것 자체가 부담이 된다. (유지 보수에 부담)

 

자동빈을 사용하면 OCP, DIP 같은 객체 지향 원칙을 지킬 수 없나?

 

그것도 아니다. 잘 지킬 수 있다.


그럼 수동빈을 굳이 사용하는 이유는 무엇인가?

 

애플리케이션은 크게 업무로직과 기술 지원 로직으로 나눌 수 있다.

업무 로직은 컨트롤러, 서비스, 레포지토리 등을 의미한다.

 

기술 지원 로직은 말그대로 기술적인 문제공통 관심사(AOP)를 처리할 때 주로 사용됨.

예를 들어 데이터 베이스 연결, 공통 로그 처리 등등이 있다.

 

업무 로직 같은 경우는 문제가 발생하면 어디가 문제인지 명확하게 보이지만

기술 지원 로직 같은 경우는 적용이 잘 되고 있는지 파악하기 어려운 경우가 많다.

 

그래서 기술 지원 로직은 가급적 수동 빈 등록을 통해 명확하게 드러내야한다.


이외에 어떤 경우들이 있을까?

 

직접 등록하는 기술 지원 객체는 수동 등록

다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민해보자

728x90