Spring DI 방법

Spring을 처음 배울 때 Dependency Injection은 무조건 @Autowired 만을 사용하는지 알고 있었다. 하지만 @Autowired 이외에 여러 방법들이 있고, 각각의 방법들을 정리해보려고 한다. 1. Field Injection - 흔히 사용하는 @Autowired 를 필드 위에 달아 줌으로써 사용하는 방법이다. Intellij 를 사용하여 개발을 하고 있는데 @Autowired를 사용하면 아래와 같이 노란줄이 뜬다. 해석 하면 스프링 팀에서 항상 생성자 기반의 의존성 주입을 하라고 한다. : 항상 의무적인 의존성에 대해서 assertions 을 사용하라고 한다. 2. Setter Injection Field Injection과 유사하다. Setter 위에 @Autowired를 달아준다. 3. Constructor Injection 아래와 같이 생성자 에서 의존성을 주입한다. 생성자 위에 @Autowired 를 달아주었다. https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3 하지만, 스프링 4.3 부터는 @Autowired 를 달아 주지 않아서 컨테이너가 알아서 처리할 수 있게 되었다. 그리고 아래와 같이 final 을 선언하여 의존성을 불변으로 할 수 있다. 3.1 @AllArgsConstructor 추가적으로 lombok 과 더불어서 생성자 방식을 사용 할 수 있다. 모든 필드에 대해서 생성자 주입 방식을 적용하는 Annotation 이다. 3.2 @RequiredArgsConstructor 또한 final 을 통한 불변으로 하고 싶을 때 final 이 붙은 모든 필드에 대해서 생성자 주입 방식을 적용하는 Annotation 이다. 결론 필드 방식 에 대해서 정확하게 왜 ...