본문 바로가기
Backend - Java Spring/Spring Core

[SpringCore 핵심원리] 다양한 DI 방법

by VictorMeredith 2024. 2. 17.

1. 의존관계 자동 주입

- 4가지가 있다

  : 생성자 주입

  : 수정자 주입(setter 주입)

  : 필드 주입

  : 일반 메서드 주입

 

 2. 생성자 주입

요 방법

- 특징 : 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다.

- 불변성, 필수 의존관계에서 사용된다. (memberRepository, discountPolicy가 안바뀌게 함, final 붙이는 것도)

- 근데! 생성자가 딱 한개만 있으면 @Autowired 를 생략해도 된다. (두개일땐 안됨, 스프링 빈이어야 한다.)

- 생성자주입은 빈을 등록하면서 주입이 같이 일어난다.

@Autowired가 없어도 자동 주입된다

 

3. 수정자 주입

- final 빼고 set~로 네이밍을 한 setter를 만든다.

이렇게도 주입이 된다.

- 의존관계 주입 두번째 단계에서 일어남. 좀 늦나보다

- 선택/변경 가능성이 있는 의존관계에서 사용

- 선택적 의존관계 주입

 

4. 필드 주입

- 쓰지 말자. 안티 패턴

이렇게 짧긴한데

- 수정도 불가능하고 권장되지 않는다.

테스트가 불가!

- 테스트코드에서는 가능. (실제 앱에서는 사용하지 말자)

 

5. 일반메서드 주입

- 일반적으로 잘 사용하지 않음

- 아무 메서드에다가 @Autowired 쓸 수 있긴 함.

- 수정자랑 똑같다.. 쓸 일이 없음

 

6. @Autowired의 옵션 처리

- 주입할 스프링 빈이 없어도 동작해야 할 때가 있음 (Default 로직이라거나..)

- 세가지가 있음

출력 결과

 

 

댓글