Я пытаюсь создать приложение ASP.NET MVC, используя Spring.NET для инъекций зависимостей. Приложение имеет три уровня: контроллер, служба и данные.Spring.NET Зависимости, которые не вводятся
Я определил объекты в файле «~ \ Resources \ objects.xml».
Мой первый объект, UserAccountController, требует применения двух классов Service-level: 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 и класс Spring ControllerFactory, и ссылки на них в Global.asax .cs: ControllerBuilder.Current.SetControllerFactory (typeof (App.Util.SpringControllerFactory)); Должен ли я получить контекст, если я использую этот метод? – Jason
честно, я не знаю. Но, очевидно, нет. Лучшей практикой для инверсии управления является загрузка контейнера в начале приложения и отсутствие других ссылок на контейнер. Если конфигурация выполнена хорошо, вызовите ContextRegistry.getContext(); должен обрабатывать все – Fabiano
Хорошо, я бросил причудливые реализации ControllerFactory и ApplicationContext в пользу простого вызова ContextRegistry.getContext() и переключился на обычный ContextHandler в web.config. Все еще не удача в инъекции. – Jason