[스프링 핵심원리 기본편] 7.7 자동, 수동의 올바른 실무 운영 기준

코린이서현이·2023년 11월 16일
0

🥹들어가면서🥹

감당할 수 있는 만큼만 열심히 해야겠다.!!

📌 자동 수동의 올바른 실무 운영 기준

그동안 자동 빈 등록, 의존관계 등록과 수동등록에 대해서 알아보았다.

  • 자동 : 컴포넌트 스캔과 자동 주입
  • 수동 : 설정 정보를 통한 수동 빈 등록, 의존관계 수동주입

🔍 어떤 상황에서 어떤 방법을 써야할지 알아보자.

자동 등록의 사용

👍 기본으로 자동기능을 사용하자.

스프링은 @Component, @Controller , @Service , @Repository처럼 애플리케이션 로직에 맞춰 자동스캔할 수 있도록 지원한다.
이후에 추가로 공부할 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건만 맞으면 자동으로 등록하도록 설계되었다.

자동 빈 등록을 사용했을 때도 ⭐OCP(개방-폐쇄 원칙)과 ⭐DIP(의존관계 역전 원칙)을 지킬 수 있다.

  • ⭐OCP(개방-폐쇄 원칙) : 변경 시, 기존 코드를 변경하지 않아도 가능 해야한다.
  • ⭐DIP(의존관계 역전 원칙) : 구현과 역할을 나누고, 역할에 의존하게 해야한다.

애플리케이션의 로직

업무로직 빈

컨트롤러, 서비스, 레파지토리 등을 말한다.
👉 업무와 관한

  • 컨트롤러, 서비스, 리파지토리처럼 유사한 패턴이 존재한다.
  • 수가 많다. 즉 수동 빈등록을 하기에 비용이 많이 든다.

➡️ 자동기능을 적극 사용하는 것이 추천된다.

기술지원 빈

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

  • 빈의 수가 매우 적다.
  • 하나의 빈들이 광범위한 영향을 준다.
  • 파악하기 힘들다.

➡️ 수동 빈 등록을 사용해서 명확하게 드러내는 것이 좋다.
애플리케이션에 광범위하게 영향을 미치는 기술 지원 객체는 수동 빈으로 등록해서 딱! 설정 정보에 바로 나타나게 하는것이 유지보수 하기 좋다.

수동 빈 등록의 사용

✔️ 기술 지원 객체에 사용하는 것이 좋다.

✔️ 비즈니스 로직 중에서 다형성을 적극 활용할 때
➡️ 자동 빈등록을 사용하고 싶다면 특정 패키지를 이용한다.
➡️ 수동 빈등록을 이용한다.
👉 설정 정보를 한눈에 볼 수 있도록 한다.

@Configuration
public class DiscountPolicyConfig {

 @Bean
 public DiscountPolicy rateDiscountPolicy() {
 return new RateDiscountPolicy();
 }
 
 @Bean
 public DiscountPolicy fixDiscountPolicy() {
 return new FixDiscountPolicy();
 }
}

즉, 추상화를 적극적으로 이용한 경우 다른 개발자가 코드를 보고 바로 이해하기 힘든 상황에서는 설정정보를 이용한다면 이해하는데 큰 도움을 준다.

✔️ 유지 보수를 위해서는 설정정보를 사용하는 것이 필요할 때가 있다.

➕ 참고

스프링과 스프링 부트가 자동으로 등록하는 빈들은 그대로 사용하는 것이 좋다. 이때 내가 직접 기술 지원 객체를 스프링 빈으로 등록한다면, 수동으로 등록해서 명확하게 하는 것이 좋다.

좋은 코드란?

🤔 유지보수하기 좋은 코드?
핵심은 딱 보고 이해가 되어야 한다!

🤔마무리하면서🤔

편리한 자동 기능을 기본으로 사용하자
직접 등록하는 기술 지원 객체는 수동 등록
다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민해보자
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글