1. Version
💬
2. 의존성 주입이란?
💬 DI
- 컨테이너에서 관리할 객체를 지정해주고, 코드내에서 객체를 받아 사용하는 방식이다.
예전에는 new className() 또는 getInstance() 등의 메서드 등을 통해 받아서 넣어주는 방식을 사용했다.
3. @Autowired
💬 @Autowired란
- 이 어노테이션을 특정 필드에 부여하면 IoC컨테이너 안에 존재하는 특정 필드와 같은 타입의 Bean을 찾아 자동으로 주입해준다.
💬 @Autowired Code
- 의존성을 주입할 객체 위에
@Autowired
어노테이션을 붙여주면 자동으로 의존성이 주입된다.
public class AutowiredExController {
@Autowired
private AutowiredExService autowiredExService;
}
💬 spring 4.3 부터는 위 방법을 지양한다.
4. @Autowired 대신 @RequiredArgsConstructor 지향하는 이유
💬
- 순환 참조 방지
- 객체의 의존성을 추가하다 보면 순환 참조 문제가 발생할 수 있다. 이러면 서버가 죽어버린다.
A가 B를 참조하고, B가 A를 참조
- final 선언이 가능하다.
- 테스트 코드 작성 용이
- 스프링 컨테이너 도움 없이 테스트 코드를 편리하게 작성할 수 있다.
5. @RequiredArgsConstructor
💬 @RequiredArgsConstructor란
- 생성자를 자동으로 생성해주는 어노테이션이다.
- final 키워드가 붙은 멤버변수를 생성자 파라미터로 알아서 넣어준다.
💬 @RequiredArgsConstructor Code
public class AutowiredExController {
@RequiredArgsConstrucotr
final AutowiredExService autowiredExService;
}
---> 위와 아래랑 같다.
public AutowiredExController(finale AutowiredExService autowiredExService) {
this.autowiredExService =autowiredExService;
}
📚 참고