Я читал весенние документы на эту тему несколько раз, но некоторые вещи до сих пор мне неясны.Документация гласит:
Если вы хотите внедрить (например) 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>
Здесь, userManager bean определен как синглтон.Итак, мне интересно, применяется ли этот прокси-компонент только к бинам синглтоновой области, то есть, если вы хотите внедрить бин с веб-областью в синглтон-бины, или это также относится к бинам-прототипам?Например, если userManager был задан в качестве прототипа?
Я спрашиваю об этом, потому что я видел некоторый код, который внедряет бины сессионной области в прототипы без aop-прокси, но я неконечно, если это правильно ... В частности, это были компоненты DAO в некоторых веб-приложениях, имеющие область действия session , и они были внедрены в контроллеры с прототипом для многопользовательской среды.Это правильный путь?Как в целом должны быть ориентированы компоненты DAO / Service в среде веб-приложений?
Любая идея приветствуется.