2010-01-20 3 views
2

spring.net의 IoC conatiner를 클래스 라이브러리에서 사용하려고 시도했지만 그 자체는 실행 파일이 아닙니다. 웹 프로젝트는 단순히이 라이브러리를 호출하며,이 라이브러리는 스프링 바이너리 및 스프링의 설정 파일에 대한 참조를 포함합니다. 기본적으로 질문은 다음과 같습니다. spring.net은 실행 파일에 있어야하며 실행 파일에서 참조 할 클래스 라이브러리에 상주해야합니까?spring.net이 클래스 라이브러리에 사용되었습니다.

도움이 될 것입니다.

답변

2

실행 파일에서 참조하는 dll에있을 수 있지만 실행 파일의 구성 파일에 구성이 포함되어 있는지 확인하십시오.

+0

모든 봄 설정은 실행 파일의 설정 파일에 있어야합니다. – AndyMM

3

클래스 라이브러리 프로젝트에 구성의 일부를 포함 리소스 파일로 포함 할 수 있습니다. LibraryConfig.xml이라고 부르 자. 그런 다음 실행 파일의 응용 프로그램 구성 파일에 assembly: 접두어를 사용하여 포함 된 리소스를 포함합니다. 다음은 그 예입니다 :

<spring> 
    <context type="Spring.Context.Support.XmlApplicationContext, Spring.Core"> 
    <resource uri="assembly://FooLibrary/FooLibrary/LibraryConfig.xml"/> 
    <resource uri="config://spring/objects" /> 
    </context> 
    <objects xmlns="http://www.springframework.net"> 
    <object id="mainForm" type="FooApp.MainForm, FooApp"> 
     <!-- mainController is some object defined in LibraryConfig.xml --> 
     <property name="Controller" ref="mainController"/> 
    </object> 
    </objects> 
</spring> 

주 응용 프로그램에서 Spring 자체를 사용할 필요가없는 경우 라이브러리에서 전체 응용 프로그램 컨텍스트를 설정할 수 있다고 생각합니다. 위에서 설명한대로 구성 파일을 포함시킨 다음 응용 프로그램 컨텍스트를 보유하고 포함 된 구성 파일에서로드하도록 싱글 톤 객체를 정의합니다. 마지막으로 클래스를 생성하기 위해 클라이언트 코드를위한 일종의 팩토리 메소드를 정의해야합니다. 팩토리 메소드는 (아마도 제네릭을 사용하여) 싱글 톤 자체에 적용하거나 인스턴스화해야하는 각 클래스에 대해 별도의 팩토리 메소드를 가질 수 있습니다. 이러한 팩토리 메서드는 응용 프로그램 컨텍스트에서 실제 요청을 만들고 클라이언트 코드는이를 보지 못합니다.

관련 문제