본문 바로가기

생성자 주입을 선택해야 하는 이유

1. 불변

대부분의 DI는 한번 주입되면 애플리케이션 종료 시점까지 의존관계가 변하면 안 된다.(불변해야 한다)

수정자(setter) 주입은 set00 메소드를 public으로 열어두어야 한다. 그렇게 하면 의존관계를 누군가 변경할 수 있기 때문에 좋은 방법이 아니다.

생성자 주입은 객체를 생성할 때 딱 1번만 호출되고 이후에 호출되는 일이 없다. 따라서 불변하게 설계할 수 있다.

2. 누락

수정자 주입을 사용하면 의존관계가 누락되었을 때, 애플리케이션 실행은 가능하지만 실행 결과는 NPE가 뜨게 된다.

생성자 주입을 사용하면 같은 상황에서 컴파일 오류를 알려줌과 함께 인텔리제이가 어떤 의존관계를 필수로 주입해야 하는지 알려준다.

(생성자 주입 사용시 의존관계 누락되었을때) 컴파일 오류가 뜨고 주입되어야 하는 값을 인텔리제이가 친절하게 알려준다.

(정상적으로 수정되었을 때)

3. fianl 키워드 사용 가능

생성자 주입을 사용해야만 필드에 final 키워드(불변) 를 사용할 수 있기 때문에 값이 생성되지 않는 오류를 막아준다.

 

내머내공 : 내 머리로 내가 공부했습니다

틀린 내용은 언제든지 알려주세요!!