의존관계 주입 방법들
1. 생성자로 주입
생성자 호출시점에 딱 1번만 호출( 불변, 필수 의존관계에 사용 )
2. 수정자 주입(setter로 주입)
선택, 변경 가능성이 있는 의존관계에 사용
3. 필드에 주입
권장x
의존관계 자동 주입은
스프링 컨테이너가 관리하는 스프링 빈이어야 동작한다.
스프링 빈이 아닌 일반클래스에서 @Autowired 코드를 적용해도 아무 기능도 동작하지 않는다
@Autowired 에서, 자동 주입할 대상이 없는경우( 해당 스프링 빈이 없는 경우 )
1. 그냥 쌩 @Autowired : 오류남( UnsatisfiedDependencyException )
2. @Autowired(required=false) : 해당 메서드 자체가 호출 안됨( 오류x )
3. 메서드 파라미터에 @Nullable : null이 주입됨
4. 메서드 파라미터에 Optional<> : Optional.empty이 주입됨
ex) 메서드 파라미터 부분 : ( @Nullable Member noBean2 ) , ( Optional<Member> noBean3 )
생성자 주입을 선택해라!
의존관계 불변, 누락방지
필드에 final 키워드를 사용할 수 있다.
최근에는 스프링을 포함한 DI 프레임워크 대부분이 생성자 주입을 권장.
기본으로 생성자 주입을 사용하고
, 필수 값이 아닌 경우에는 수정자 주입 방식을 옵션으로 부여하면 된다.
'김영한님 인강듣고 > 스프링 핵심원리-기본' 카테고리의 다른 글
| 의존관계 주입에서 (0) | 2024.03.07 |
|---|---|
| lombok (0) | 2024.03.06 |
| 컴포넌트 스캔( 탐색 범위, 기본스캔 대상, 필터, 중복 등록과 충돌 ) (0) | 2024.02.26 |
| @ComponentScan, @Component, @Autowired 통한 스프링빈 등록 (1) | 2024.02.26 |
| 코드 복습( 섹션 5 ) (0) | 2024.02.22 |