首页 > 代码库 > Spring文档苦读【3】【短生命周期的Bean注入长生命周期的Bean】
Spring文档苦读【3】【短生命周期的Bean注入长生命周期的Bean】
前言
在Spring 中,定义Bean的范围有多种。一种是经常用的Singleton,还有prototype,request,session,globalSession,application,websocket等等,但是我们如何把短生命周期的bean注入到我们长生命周期的bean中呢?例如,我如何把scope为session的bean注入到singleton的bean中呢?
有的同学可能会这样做
1 <!-- 短生命周期 --> 2 <bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/> 3 <!-- 长生命周期 --> 4 <bean id="userManager" class="com.foo.UserManager"> 5 <property name="userPreferences" ref="userPreferences"/> 6 </bean>
但是由于UserManager的bean是在整个容器中只有一个实例,那么它的依赖bean也只能有一个,那么,这时我们如何解决单例bean获取session生命周期的bean 呢?
通过官方文档查看得出结论
1 <!-- 短生命周期 --> 2 <bean id="userPreferences" class="com.foo.UserPreferences" scope="session"> 3 <aop:scoped-proxy/> 4 </bean> 5 <!-- 长生命周期 --> 6 <bean id="userManager" class="com.foo.UserManager"> 7 <property name="userPreferences" ref="userPreferences"/> 8 </bean>
Spring 容器通过<aop:scoped-proxy/>创建了一个CGLIB的Bean的代理,来帮我们实现当前生命周期下的bean的实例注入
Spring文档苦读【3】【短生命周期的Bean注入长生命周期的Bean】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。