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