의존관계 자동 주입

2023. 7. 18. 21:39Spring/[inflearn]스프링 핵심 원리 - 기본편

◎ 의존관계 주입 방식 4가지

-> 의존관계 주입에는 4가지 방법이 있다.

-> 생성자, 수정자(setter 주입), 필드, 일반 메서드 주입

 

◎ 생성자 주입

-> 생성자를 통해서 의존관계를 주입하는 방식

-> 지금까지 사용해왔던 주입 방식이 생성자 주입

-> 생성자 호출 시점에 단 1번만 호출된다.

-> 불변, 필수 의존관계에서 사용

-> 생성자가 하나만 있으면 @Autowired는 생략이 가능하다.

 

◎ 수정자 주입

-> setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해 의존관계를 주입하는 방식

-> setter로 필드의 값을 변경할 수 있기 때문에 선택, 변경 가능성이 있는 의존관계에서 사용

 

 

◎ 필드 주입

-> 필드에 바로 주입하는 방식

-> 필드 주입은 외부에서 변경이 불가능해서 테스트가 어렵다.

-> DI 프레임워크에 의존한다. 

-> 실제 코드와 관련없는 테스트 코드나 스프링 설정을 목적으로 하는 @Configuration같은 곳에서 특별한 용도로 사용한다.

-> 이 방식은 memberRepository와 discountPolicy에 값이 없어서 이대로 테스트를 할 경우 NPE가 발생한다.

 

◎ 일반 메서드 주입

-> 일반 메서드로 주입을 받는 방식

-> 한 번에 여러 필드를 주입받을 수 있다.

 

※ 여러 의존관계 주입 방식 중 생성자 주입을 권장한다.

- 생성자 주입 방식은 의존 관계 주입이 처음 애플리케이션 실행할 때 정해지고 종료될 때까지 변경되지 않는다.

- 생성자 주입을 제외한 나머지 주입방식은 생성자 이후에 호출되는 형태이므로 final을 사용할 수 없다.

 

 

☆ 참고

[인프런]스프링 핵심 원리 - 기본편