티스토리 뷰
1. 필드 주입 (Field injection)

- 필드에 바로 주입
- 코드가 간결해지지만 외부에서 memberRepository 변경이 불가능하여서 테스트가 어려울 수 있음
- DI 프레임워크에 의존적
2. 수정자 주입 (Setter injection)

- setter 메서드를 통해 주입
- 변경이 가능하기 때문에, 선택이나 변경 가능성이 있는 의존 관계일 때 사용
-> 런타임 시점에도 변경이 가능하다..
-> 필수 값이 아닌 경우에 수정자 주입 방식을 옵션으로 부여하는 것이 바람직
3. 생성자 주입 (Constructor Injection) ★

- constructor를 통해 생성자 호출 시점에 단 한 번 주입 (스프링 bean 기준, 생성자가 하나 뿐이면 @Autowired 생략 가능함)
- 중간에 변경될 일이 없기 때문에
-> final 키워드
-> 불변! 필수! 의존관계에서 사용 - 프레임워크에 의존하지 않고, 순수한 자바 언어의 특성을 잘 살리는 방법으로 권장됨
ref. 롬복 라이브러리 사용 시 생성자 주입

- final 키워드가 붙은 필드를 모아서 생성자를 자동으로 만들어줌
-> 스프링 컨테이너가 injection하면서 생성자에서 세팅하고 끝나는 필드들은 final로
'Spring' 카테고리의 다른 글
| 컴포넌트 스캔과 수동 Bean 등록 (0) | 2022.04.24 |
|---|---|
| OSIV (0) | 2022.04.24 |
| JPA N+1문제 (0) | 2022.04.23 |
| JPA의 병합(merge)과 변경 감지(Dirty Checking) 차이점 (0) | 2022.04.21 |
| 도메인 모델 패턴 / 트랜잭션 스크립트 패턴 (0) | 2022.04.21 |