Я думаю, что следующее предположение, которое вы делаете, неверно:
Однако пример Spring.Northwind.Web, который поставляется с
В источнике Spring.NET каждый веб-контроллер (т. Е. Ведущий) принимает
NHibernate ISessionFactory объект как конструктор зависимости.
В примере проекта есть один «контроллер»: NHibernateCustomerEditController
. И это действительно вводится с фабрикой сессий . Однако это не тот контроллер в том смысле, в котором вы его представляете: это служебный класс для управления CurrentCustomer
в сеансе пользователя - он демонстрирует использование объектов в области сеанса.
В этом примере не используется шаблон MVP; зависимости от служб и репозиториев (DAO) вводятся непосредственно на страницу.
Open session in view (OSIV) реализован в виде модуля http, и поэтому он не требует, чтобы фабрика сеансов вставлялась на каждую страницу (или для представления страницы, если вы применяете MVP) - «она просто есть в http context ".
В вашей ситуации (я полагаю) услуги вводятся вашему докладчику; эти услуги могут зависеть от DAO, для которых требуется SessionFactory
. нет необходимости вводить SessionFactory
на каждом докладчике или странице: вы можете продолжить свою "обычную" настройку с применением или без применения OSIV. Ваш уровень представления не должен зависеть от SessionFactory
любого вида.