2009-04-03 2 views
5

기존 응용 프로그램에서 사용할 Java 라이브러리를 작성하고 있습니다. 의존성 주입을 사용하므로 테스트가 더 쉽고 Spring을 잘 알고 있으므로 테스트하는 동안 종속성 주입을 관리하는 데 사용할 계획입니다. 결국 라이브러리를 사용할 응용 프로그램은 Spring 기반이 아니며 현재 어떤 종류의 IoC/DI 컨테이너도 사용하지 않습니다. 제 질문은 Spring이나 Guice가 사용되지 않는 경우 종속성을 주입하는 가장 좋은 방법은 무엇입니까? 객체를 인스턴스화하고 연결하는 팩토리 메소드와 같은 것을 고려해야합니까? 종속성은 모두 라이브러리 내부에 있으므로 응용 프로그램에서 각 종속성을 인스턴스화하여 기본 객체를 만드는 것이 적절하지 않은 것처럼 보입니다.라이브러리에서 종속성 삽입 사용

답변

4

Spring 또는 Guice를 사용하지 않는 경우 종속성을 주입하는 가장 좋은 방법은 무엇입니까?

귀하의 도서관이 DI 친화적 인 관용구로 작성된 경우. 엄격한 java API로 사용하는 것이 매우 쉽습니다. 과거의 봄 경험을 생각해보십시오. 거기에 봄 모델과 완벽하게 맞는 몇 가지 라이브러리가 있지만 봄 시간 전에 작성되었습니다. 나는 new으로 아무 것도 안 보이고, setXX이 뒤 따르고 실제 작업 메서드를 호출합니다. 다른 것보다 클라이언트가 신뢰할 수있는 호출 방식 인 init을 호출하는 것을 잊을 수 있기 때문에 조심하십시오.

개체를 인스턴스화하고 연결하는 팩토리 메서드 같은 것을 고려해야합니까? 종속성은 모두 라이브러리 내부에 있으므로 응용 프로그램에서 각 종속성을 인스턴스화하여 기본 객체를 만드는 것이 적절하지 않은 것처럼 보입니다.

클라이언트 응용 프로그램에서 결정하게하십시오. 도서관을 제공하고 있습니다. API 클라이언트가 자체 객체를 연결하도록합니다. 예제를 제공하십시오. 나중에 동일한 예제를 사용하여 클라이언트 도메인에서 팩토리 메서드를 만들 수 있습니다. 어쩌면 클라이언트 응용 프로그램 자체가 자체 구성 방법을 가지고 있으므로 API를 사용하면 라이브러리를 충분히 활용하여 유연성을 확보하는 것이 바람직합니다.

아니면 guice를 포함 할 수 있습니다. 라이센스는 Apache입니다. 자바 자체의 전체 조각처럼.