← 질문 목록
#128깊이 0
생성자 주입이 기본 선택인 이유는?
필수 의존성을 객체 생성 시점에 보장하고 불변으로 만들 수 있기 때문이다. 테스트에서 직접 주입하기 쉽다. 순환 참조도 시작 단계에서 드러난다.
| 기준 | 생성자 주입 | 필드 주입 |
|---|---|---|
| 필수성 | 생성자 서명이 강제한다 | 빈을 만들 때 주입 오류로 잡힌다 |
| 불변성 | final 가능 | final 불가 |
| 테스트 | 직접 전달 | 컨테이너 필요 |
선택 의존성은 세터나 ObjectProvider로 표현할 수 있다. 필수 값과 선택 값을 주입 방식에서 구분하면 객체의 계약이 선명해진다.
생성자가 하나면 @Autowired를 생략할 수 있다. 매개변수가 지나치게 많다면 주입 문법보다 클래스가 너무 많은 책임을 가진 것은 아닌지 먼저 본다.