감당할 수 있는 만큼만 열심히 해야겠다.!!
그동안 자동 빈 등록, 의존관계 등록과 수동등록에 대해서 알아보았다.
🔍 어떤 상황에서 어떤 방법을 써야할지 알아보자.
👍 기본으로 자동기능을 사용하자.
스프링은 @Component
, @Controller
, @Service
, @Repository
처럼 애플리케이션 로직에 맞춰 자동스캔할 수 있도록 지원한다.
이후에 추가로 공부할 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건만 맞으면 자동으로 등록하도록 설계되었다.
자동 빈 등록을 사용했을 때도 ⭐OCP(개방-폐쇄 원칙)과 ⭐DIP(의존관계 역전 원칙)을 지킬 수 있다.
컨트롤러, 서비스, 레파지토리 등을 말한다.
👉 업무와 관한
➡️ 자동기능을 적극 사용하는 것이 추천된다.
기술적인 문제나, 공통 관심사 (AOP)를 처리할 때 주로 사용한다. 데이터베이스 연결이나 공통 로그 처리처럼 업무 로직을 지원하기 위한 하부 기술이나 공통 기술들이다.
➡️ 수동 빈 등록을 사용해서 명확하게 드러내는 것이 좋다.
애플리케이션에 광범위하게 영향을 미치는 기술 지원 객체는 수동 빈으로 등록해서 딱! 설정 정보에 바로 나타나게 하는것이 유지보수 하기 좋다.
✔️ 기술 지원 객체에 사용하는 것이 좋다.
✔️ 비즈니스 로직 중에서 다형성을 적극 활용할 때
➡️ 자동 빈등록을 사용하고 싶다면 특정 패키지를 이용한다.
➡️ 수동 빈등록을 이용한다.
👉 설정 정보를 한눈에 볼 수 있도록 한다.
@Configuration
public class DiscountPolicyConfig {
@Bean
public DiscountPolicy rateDiscountPolicy() {
return new RateDiscountPolicy();
}
@Bean
public DiscountPolicy fixDiscountPolicy() {
return new FixDiscountPolicy();
}
}
즉, 추상화를 적극적으로 이용한 경우 다른 개발자가 코드를 보고 바로 이해하기 힘든 상황에서는 설정정보를 이용한다면 이해하는데 큰 도움을 준다.
✔️ 유지 보수를 위해서는 설정정보를 사용하는 것이 필요할 때가 있다.
스프링과 스프링 부트가 자동으로 등록하는 빈들은 그대로 사용하는 것이 좋다. 이때 내가 직접 기술 지원 객체를 스프링 빈으로 등록한다면, 수동으로 등록해서 명확하게 하는 것이 좋다.
🤔 유지보수하기 좋은 코드?
핵심은 딱 보고 이해가 되어야 한다!
편리한 자동 기능을 기본으로 사용하자
직접 등록하는 기술 지원 객체는 수동 등록
다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민해보자