2009-07-03 7 views
0

Я использую собственную реализацию интерфейса UserDetailsService для загрузки объекта User из базы данных и размещения его как UserDetail в моем SecurityContext. Объект User - это отдельный объект Hibernate.Spring Security UserDetails Best Practice

Когда я хочу получить доступ к ленивым отношениям загрузки аутентифицированного пользователя, мне нужно его получить из SecurityContext и снова присоединить его к сеансу Hibernate, загрузив его идентификатор или слияние.

Где вы это обычно делаете в приложении Spring MVC или Spring WS? В контроллере это означает, что я должен ввести UserDAO в него или передать идентификатор на уровень сервиса, чтобы загрузить его там?

ответ

3

Ничего из этого в Контроллере. Поместите его в слой «Сервис».

Контроллер действительно является частью представления. Если вы измените технологии просмотра, это не должно изменить правильную работу Сервиса. Поместите его туда и введите Сервис в Контроллер.

DAO не входят в состав Контроллеров по той же причине.