스프링부트를 하다가 보니 클래스에서 의존성 주입을 할때 @Autowired
와 private final
의 차이에 대해 궁금해졌다.
스프링 프레임워크에서 의존성 주입방법
- private final
- 생성자 기반의 DI
- 가장 권장하는 방식 : 이유는, 순환참조를 방지할 수 있고 테스트에 용이하다. 또한, final 선언이 가능하기 때문에 불변성이 보장된다.
- @RequiredArgsConstructor은 final이 선언된 모든 필드의 인자값으로 하는 생성자를 생성해준다.
-
@Autowired
: 필드에 자동으로 의존성 주입
-
setter
: 수정자 주입
cc. https://eboong.tistory.com/525