Spring.NET을 사용하여 종속성을 주입하는 ASP.NET MVC 응용 프로그램을 만들려고합니다. 응용 프로그램에는 컨트롤러, 서비스 및 데이터의 세 가지 계층이 있습니다.Spring.NET 종속성이 주입되지 않음
"~ \ Resources \ objects.xml"파일에 개체를 정의했습니다.
첫 번째 개체 인 UserAccountController에는 UserAccountService 및 DepartmentService라는 두 개의 서비스 계층 클래스가 필요합니다. 그래서, objects.xml의 정의는 다음과 같습니다
<object id="UserAccountController" type="App.Controllers.UserAccountController, App">
<constructor-arg index="0" ref="DepartmentService" />
<constructor-arg index="1" ref="UserAccountService" />
</object>
<object id="UserAccountService" type="App.Service.UserAccountService, App">
<property name="UserAccountDao" ref="UserAccountDao" />
</object>
<object id="UserAccountDao" type="App.Data.UserAccountDao, App" />
<object id="DepartmentService" type="App.Service.DepartmentService, App">
<property name="DepartmentDao" ref="DepartmentDao" />
</object>
<object id="DepartmentDao" type="App.Data.DepartmentDao" />
Webconfig이 포함
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri="~/Resources/objects.xml" />
</context>
</spring>
내가 생성자보다는 부동산 주사를 사용하는 것을 선호하지만, 현재도 방법은 노력하고 있습니다. 나는 또한 SpringApplicationController 클래스를 가지고 : 당신의 bootstrapclass에
내가 실제로 SpringApplicationController 클래스와 봄 ControllerFactory 클래스가 있고, Global.asax에 그들을 참조 .cs : ControllerBuilder.Current.SetControllerFactory (typeof (App.Util.SpringControllerFactory))); 이 방법을 사용하는 경우 컨텍스트를 가져올 필요가 있습니까? – Jason
솔직히, 나는 모른다. 그러나 분명히 아닙니다. Inversion of Control의 가장 좋은 방법은 응용 프로그램 시작시 컨테이너를로드하고 컨테이너에 대한 다른 참조가없는 경우입니다. 구성이 잘 수행되면 ContextRegistry.getContext(); 모든 것을 다 처리해야한다. – Fabiano
좋아, ContentRegistry.getContext()에 대한 간단한 호출을 위해 멋진 ControllerFactory 및 ApplicationContext 구현을 덤프하고 web.config의 일반 ContextHandler로 다시 전환했다. 아직도 주사에 운이 없다. – Jason