Проверьте, активен ли Spring Scope - PullRequest
3 голосов
/ 17 июля 2009

Как проверить, активна ли область сеанса в Spring? например, при запуске некоторым классам нужен объект User с областью действия Session, а затем я возвращаю фиктивный объект User.

указанный бин объявляется с помощью aop: scoped-proxy. Как я могу проверить, активна ли область сеанса?

Ответы [ 2 ]

1 голос
/ 17 июля 2009

Как указано в главе 3 руководства по пружине, область действия сеанса:

Области применения одного определения бина к жизненному циклу сеанса HTTP. Действителен только в контексте веб-приложения Spring ApplicationContext.

Ваш код, если он вызывается через веб-интерфейс Spring ApplicationContext с поддержкой веб-интерфейса (скорее всего, XMLWebApplicationContext), будет автоматически внедрен с различными bean-объектами в рамках сеанса, так как они вызываются разными пользователями, если для настройки правильной конфигурации Spring задано эти бобы. Затем ваш код может игнорировать то, откуда они пришли, и сосредоточиться на использовании пользовательских атрибутов и т. Д., Обнаруженных в bean-объекте, определяемом сессией, - не беспокоясь о том, что фактически внедрило свойство.

Итак, я полагаю, что истинный ответ заключается в том, что вы не можете проверить это - но и вам не нужно - если кто-то просит вас сделать это, то "они делают это неправильно".

0 голосов
/ 10 августа 2009

Хитрость заключалась в том, чтобы создать фабрику, получить прокси с заданной областью действия с фабрики и запустить любой метод, который требует наличия фактического объекта и области действия.

затем перехватите исключение BeanCreationException для обнаружения неактивной области.

...