자동, 수동 빈 등록의 올바른 실무 운영 기준

이원석·2022년 2월 3일

Spring

목록 보기
9/20
post-thumbnail
*인프런 김영한 강사님의 강좌를 참고하여 정리한 내용입니다.*

자동주입 @ComponentScan, 수동 빈 등록 @Configuration, @Bean


어떤 경우에 자동주입과 수동 빈 등록을 해야할까?

스프링의 등장 이후 시간이 지날수록 자동을 선호하는 추세라고 한다. 스프링은 @Component 뿐만 아니라 @Controller, @Service, @Repository처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다.

또한 최근의 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계되어 있다.

수동 빈을 사용하게 되면 설정정보를 기반으로 디테일하게 App 구성과 실제 동작부분을 명확하게 나누는것이 이상적이지만 과정이 상당히 번거로우며, 관리할 빈이 많아 설정정보가 커지게 되면 설정정보를 관리하는것도 부담이 된다!




언제 수동 빈 등록을 사용할까?


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

  • 업무 로직 빈 : 웹을 지원하는 컨트롤러, 핵심 비지니스 로직이 있는 서비스, 데이터 계층의 로직을 처리하는 리포지토리 등이 모두 업무 로직이다. 보통 비즈니스 요구사항을 개발할 때 추가되거나 변경된다.

업무 로직은 숫자도 매우 많고, 한번 개발하게 되면 컨트롤러, 서비스, 리포지토리 처럼 유사한 패턴이 있으며 문제가 생겼을때 파악하기 쉽다. 이런 경우 자동기능을 사용하는 것이 좋다.


  • 기술 지원 빈 : 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용된다. DB 연결, 공통 로그 처리처럼 업무 로직을 지원하기 위한 하부 기술이나 공통 기술들이다.

기술 지원 로직은 업무 로직에 비해 수가 매우 적고, 보통 애플리케이션 전반에 걸쳐 광범위 하게 영향을 미치며 문제가 생겼을때 파악하기 어렵다. 이런 경우 수동 빈 등록을 사용하는 것이 좋다.


따라서!

애플리케이션에 광범위 하게 영향을 미치는 기술 지원 객체는 수동빈으로 등록하여 설정정보에 바로 나타하는 것이 유지보스 측면에 유리하다.



0개의 댓글