我几次阅读关于这个主题的春季文档,但有些东西对我来说还不清楚。 文档状态:Spring会话范围的bean作为原型bean中的依赖关系吗?
如果要注入(例如)HTTP请求范围的bean到另一个bean,你必须到位的作用域bean注入一个AOP代理。也就是说,您需要注入一个代理对象,该对象公开与作用域对象相同的公共接口,但也可以从相关作用域(例如,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豆的作用域确定为单例。所以,我想知道这个代理的东西是否应用只有单身作用域的豆,也就是说,如果你想注入web作用域bean到单身bean,或者它也适用于原型豆?例如,如果userManager被限定为原型?
我在问这是因为我看到一些代码将会话范围的bean注入到没有aop代理的原型中,但我不确定这是否正确......特别是那些在某些web中的DAO bean -app,范围为会话,并且它们被注入到用于多用户环境的原型范围的控制器中。这是正确的路吗?一般情况下应该如何将DAO/Service bean作用于web-app环境?
任何想法,将不胜感激。