생성자 주입을 선택해라!

도도·2023년 3월 22일
0

SPRING

목록 보기
8/14

최근 스프링을 포함한 DI 프레임워크 대부분이 생성자 주입을 권장한다.

불변

  • 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다
  • 오히려 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안됨
  • 수정자 주입을 사용하면 setter 메서드를 public 으로 열어 두어야 한다
  • 누군가가 실수로 변경할 수 있으며, 변경하면 안되는 메서드를 열어두는 것은 좋은 설계 방법이 아님

📍 생성자 주입은 객체를 생성할 때 딱 1번만 호출되므로 이후에 호출되는 일이 없다. -> 불변

생성자 주입을 사용하면 주입 데이터를 누락했을 때 컴파일 오류 가 발생한다

final 키워드


  @Component
  public class OrderServiceImpl implements OrderService {
      private final MemberRepository memberRepository;
      private final DiscountPolicy discountPolicy;

	  @Autowired
      public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
          this.memberRepository = memberRepository;
      }
 	  
      //...
}
  • discountPolicy 에 값을 성정해야하는데 누락, 자바는 컴파일 시점에 오류를 발생

  • 😁컴파일 오류는 가장 빠르고 좋은 오류다 !!

    • 참고 : 수정자 주입을 포함한 나머지 주입 방식은 모두 생성자 이후 호출되므로 final 키워드 사용불가임
    • 🚨 오직 생성자 주입만 사용가능

    이 게시글은 인프런 김영한 스프링 강의를 정리한 글입니다.

profile
공부한것 정리하는 중입니다~

0개의 댓글