Service 에서 사용하는 Dao의 B1 코드를 수정해야 하는 경우
새롭게 B2를 추가할 것인가..???
하지만 이 또한 Service코드를 수정해야 되기 때문에 좋지 않다.
ex)
private B1 b = new B1();
b.getData();
////////////////////코드 수정 과정이 필요///////////////////
private B2 b = new B2();
b.getData();
이를 해결할 수 있는 방법은 인터페이스를 활용하면 된다.
인터페이스를 활용하면 Service 코드의 인스턴스 번수를 건드리지 않아도 된다.
private B b = new B2();
b.getData();
하지만 여전히 문제가 남아있다.
객체를 생성하는 과정에서 new '클래스 명'();
즉, 클래스 명을 어떻게 바꿀 것인가...
이는 DI를 통해서 해결할 수 있다.
B1 ->에서 B2로 바꾸는 과정을 처리한다.
방법은 XML, Annotation등 외부 설정의 과정이 필요하다.
스크린샷 출처 https://www.youtube.com/c/%EB%89%B4%EB%A0%89%EC%B2%98/about