1. 의존관계 자동 주입
- 4가지가 있다
: 생성자 주입
: 수정자 주입(setter 주입)
: 필드 주입
: 일반 메서드 주입
2. 생성자 주입
- 특징 : 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다.
- 불변성, 필수 의존관계에서 사용된다. (memberRepository, discountPolicy가 안바뀌게 함, final 붙이는 것도)
- 근데! 생성자가 딱 한개만 있으면 @Autowired 를 생략해도 된다. (두개일땐 안됨, 스프링 빈이어야 한다.)
- 생성자주입은 빈을 등록하면서 주입이 같이 일어난다.
3. 수정자 주입
- final 빼고 set~로 네이밍을 한 setter를 만든다.
- 의존관계 주입 두번째 단계에서 일어남. 좀 늦나보다
- 선택/변경 가능성이 있는 의존관계에서 사용
- 선택적 의존관계 주입
4. 필드 주입
- 쓰지 말자. 안티 패턴
- 수정도 불가능하고 권장되지 않는다.
- 테스트코드에서는 가능. (실제 앱에서는 사용하지 말자)
5. 일반메서드 주입
- 일반적으로 잘 사용하지 않음
- 아무 메서드에다가 @Autowired 쓸 수 있긴 함.
- 수정자랑 똑같다.. 쓸 일이 없음
6. @Autowired의 옵션 처리
- 주입할 스프링 빈이 없어도 동작해야 할 때가 있음 (Default 로직이라거나..)
- 세가지가 있음
'Backend - Java Spring > Spring Core 핵심원리(완)' 카테고리의 다른 글
[SpringCore 핵심원리] 애너테이션 (0) | 2024.02.17 |
---|---|
[SpringCore 핵심원리] 생성자주입과 롬복 (0) | 2024.02.17 |
[SpringCore 핵심원리] 컴포넌트스캔 (0) | 2024.02.17 |
[SpringCore 핵심원리] @Configuration (0) | 2024.02.17 |
[SpringCore 핵심원리] 빈 설정과 싱글톤 (0) | 2024.02.17 |
댓글