스프링 컨텍스트에 객체를 추가하는 가장 큰 이유는 스프링이 객체를 제어하고 프레임워크가 제공하는 기능으로 객체를 더욱 보강할 수 있도록 하려는 것임을 기억해야 한다. 따라서 “이 객체를 프레임워크에서 관리해야 하는가?”라는 질문에 따라 쉽게 결정할 수 있어야 한다. 우리 시나리오에서 이 질문에 답하는 것은 어렵지 않은데, 우리가 사용하는 유일한 스프링 기능이 DI뿐이기 때문이다. 객체가 컨텍스트로부터 주입해야 하는 의존성이 있거나 그 자체가 의존성인 경우 해당 객체를 스프링 컨텍스트에 추가해야 한다. 구현을 살펴보면 의존성이 없고 그 자체로 의존성이 아닌 유일한 객체는 Comment라는 것을 알 수 있다. 이 클래스 설계에 있는 다른 객체들은 다음과 같다.
• CommentService: CommentRepository와 CommentNotificationProxy 의존성 두 개를 갖고 있다.
• DBCommentRepository: CommentRepository 인터페이스를 구현하며 CommentService의 의존성이다.
• EmailCommentNotificationProxy: CommentNotificationProxy 인터페이스를 구현하며 CommentService의 의존성이다.