Компоненты Spring с областью видимости сеанса как зависимости в прототипах bean-компонентов?

Я читал весеннюю документацию на эту тему несколько раз, но некоторые вещи мне все еще неясны. В документации указано:

Если вы хотите внедрить (например) bean-компонент с областью действия HTTP-запроса в другой bean-компонент, вы должны внедрить прокси-сервер AOP вместо bean-компонента с заданной областью. То есть вам необходимо внедрить прокси-объект, который предоставляет тот же открытый интерфейс, что и объект в области видимости, но который также может извлекать реальный целевой объект из соответствующей области (например, HTTP-запрос) и делегировать вызовы метода на реальный объект. .

Пример конфигурации выглядит следующим образом:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
     <aop:scoped-proxy/>
</bean>

<bean id="userManager" class="com.foo.UserManager">
     <property name="userPreferences" ref="userPreferences"/>
</bean>

Здесь bean-компонент userManager имеет одноэлементную область видимости. Итак, мне интересно, применяется ли этот прокси только к bean-компонентам с одноэлементной областью видимости, то есть, если вы хотите внедрить bean-компонент с веб-областью в одноэлементные bean-компоненты, или это также относится к прототипам beans? Например, если userManager был задан как прототип?

I ' m спрашиваю об этом, потому что я видел код, который внедряет bean-компоненты с областью действия сеанса в прототипы без прокси-сервера aop, но я не уверен, что это правильно ... В частности, это были bean-компоненты DAO в некоторых веб-приложениях с областью действия session , и они были внедрены в контроллеры с областью действия прототипа для многопользовательской среды. Это правильный путь? Как вообще должна быть область видимости компонентов DAO / Service в среде веб-приложений?

Любая идея приветствуется.

11
задан Less 11 March 2011 в 08:59
поделиться