Closed taxol1203 closed 3 years ago
같은 MyUpdatableSqlRegistry
를 DI 받더라도 관심사에 따라 다른 인터페이스에 의존할 수 있다고 합니다. 리스트 7-63의 의존관계 설정을 보면 BaseSqlService
와 SqlAdminService
모두 같은 빈을 참조하도록 설정됩니다. 하지만 코드로는 다르게 표현될 수 있습니다.
말씀하신 것처럼 BaseSqlService
는 자기 관심사에 해당하는 기능만 쓸 수 있게 DI 받을 때 다음과 같이 받을 것입니다.
private SqlRegistry registry;
이렇게 되면 SqlRegistry의 기능만 쓸 수 있게 되고, 결국 그림과 같이 SqlRegistry에 의존하는 관계가 만들어집니다. SqlAdminService
같은 경우 UpdatableSqlRegistry
로 DI될 인스턴스 변수를 선언하겠죠.
622 p.의 마지막 문단에서,
이 뜻은, 새로운 기능(메스드)을 확장한 interface
UpdatableSqlRegisry
가 아닌 기존의SqlRegistry
만 사용하면 된다고 되어있습니다.그런데, 그림 7-11을 보면,
SqlRegistry
를 구현한 클래스를 DI 받는 것이 아닌UpdatableSqlRegisry
를 구현한MyUpdatableSqlRegistry
를 DI를 받고있습니다.UpdatableSqlRegisry
를 구현한 클래스이면,BaseSqlService
의 관심사에 필요없는 기능(메서드)들이 있을 것인데 왜 이런 방식을 사용하였는지 궁금합니다.