반응형
생성자 주입을 선택해야 하는 이유
최근에 스프링을 포함한 DI 프레임워크 대부분이 생성자 주입을 권장한다.
불변성
- 대부분의 의존 관계 주입은 한번 일어나면 종료시점까지 의존관계를 변경할 일이 없음.
- 또한, 오히려 의존 관계는 애플리케이션 종료 전까지 불변해야 한다. (변경이 적어야함.)
- 수정자 주입은 setter를 public으로 열어 두어야 하기 때문에 외부에서 변경 가능성이 있음.
- 생성자 주입은 객체 생성 시 단 1번만 호출 되므로 불변하게 설계할 수 있음.
누락의 방지
- 생성자는 호출 시 필수적으로 값을 초기화해주어야 하므로, 누락을 방지할 수 있다.
- 또한 필드에 final을 붙여서 생성자에서만 초기화가 가능해지고 필드의 값이 final이므로, 불변성이 된다.
- 이 뿐만 아니라, 필드에 final이 붙어 있으면 개발자가 생성자에 초기화 대상을 누락하여도 컴파일 오류로 컴파일 단계에서 누락을 방지할 수 있다.
참고
- 오직 생성자 주입 방식만 final을 사용할 수 있다.
- 코드의 누락이 있어도 컴파일 오류로 미리 오류코드를 잡을 수 있는 경우가 많다.
반응형
'Backend > Spring(이론)' 카테고리의 다른 글
Spring / 컴포넌트 스캔에서 빈을 중복으로 등록하는 상황과 충돌 (0) | 2023.10.17 |
---|---|
Spring / 컴포넌트 스캔과 의존관계 자동 주입 (ComponentScan) (2) | 2023.10.17 |
Spring / @Autowired의 옵션처리 (0) | 2023.10.17 |
Spring / 의존관계 자동 주입 (0) | 2023.10.17 |
Spring - Redirect (0) | 2023.10.13 |