2023. 7. 18. 21:39ㆍSpring/[inflearn]스프링 핵심 원리 - 기본편
◎ 의존관계 주입 방식 4가지
-> 의존관계 주입에는 4가지 방법이 있다.
-> 생성자, 수정자(setter 주입), 필드, 일반 메서드 주입
◎ 생성자 주입
-> 생성자를 통해서 의존관계를 주입하는 방식
-> 지금까지 사용해왔던 주입 방식이 생성자 주입
-> 생성자 호출 시점에 단 1번만 호출된다.
-> 불변, 필수 의존관계에서 사용
-> 생성자가 하나만 있으면 @Autowired는 생략이 가능하다.
◎ 수정자 주입
-> setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해 의존관계를 주입하는 방식
-> setter로 필드의 값을 변경할 수 있기 때문에 선택, 변경 가능성이 있는 의존관계에서 사용
◎ 필드 주입
-> 필드에 바로 주입하는 방식
-> 필드 주입은 외부에서 변경이 불가능해서 테스트가 어렵다.
-> DI 프레임워크에 의존한다.
-> 실제 코드와 관련없는 테스트 코드나 스프링 설정을 목적으로 하는 @Configuration같은 곳에서 특별한 용도로 사용한다.
-> 이 방식은 memberRepository와 discountPolicy에 값이 없어서 이대로 테스트를 할 경우 NPE가 발생한다.
◎ 일반 메서드 주입
-> 일반 메서드로 주입을 받는 방식
-> 한 번에 여러 필드를 주입받을 수 있다.
※ 여러 의존관계 주입 방식 중 생성자 주입을 권장한다.
- 생성자 주입 방식은 의존 관계 주입이 처음 애플리케이션 실행할 때 정해지고 종료될 때까지 변경되지 않는다.
- 생성자 주입을 제외한 나머지 주입방식은 생성자 이후에 호출되는 형태이므로 final을 사용할 수 없다.
☆ 참고
'Spring > [inflearn]스프링 핵심 원리 - 기본편' 카테고리의 다른 글
생성자 주입을 사용하는 이유 (0) | 2023.08.01 |
---|---|
옵션 처리 (0) | 2023.07.31 |
컴포넌트 스캔 - 중복 등록과 충돌 (0) | 2023.07.17 |
컴포넌트 스캔 - 필터 (0) | 2023.07.17 |
컴포넌트 스캔 - 탐색 위치 & 기본 스캔 대상 (0) | 2023.07.17 |