case 1 :
만약 User 클래스를 의존하는 클래스가 여러 개 있다고 했을 때,
의존하는 클래스를 User 클래스로부터 상속받는 하위 클래스 VIPUser로 의존하는 것으로 바꾼다고 해보자.
이 때, User 클래스를 의존하고 있던 여러 클래스의 소스코드들을 일일이 User에서 VIPUser로 바꿔야 할 것이다.
-> 의존 주입을 받을 경우, 이 여러 클래스들을 일일이 수정할 필요가 없다.
case 2 :
만약 Car 클래스와 Bus 클래스가 Wheel 클래스를 의존하고 있고, Car 객체와 Bus 객체의 필드 Wheel에 aWheel이 들어있을 때,
Wheel을 aWheel에서 bWheel로 바꾸기 위해서는 Car 클래스와 Bus 클래스의 내부를 수정해야 한다.
-> 의존 주입을 받을 경우, Car 클래스와 Bus 클래스의 내부를 일일이 수정할 필요가 없다.
//spring 4.3이상부터 생성자에 의존성 주입할 때
//@Autowired 생략가능(생성자가 하나일 경우)
public AObject(BObject obj){
this.obj = obj;
}
@Autowired //BOject가 bean으로 등록된 상태일때
private BObject obj;
@Autowired
public void setObj(BObject obj){
this.obj = obj;
}
출처
https://velog.io/@gillog/Spring-DIDependency-Injection
https://chanhuiseok.github.io/posts/spring-5/