码迷,mamicode.com
首页 > 编程语言 > 详细

Spring文档苦读【3】【短生命周期的Bean注入长生命周期的Bean】

时间:2016-12-23 19:22:54      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:ring   name   foo   user   --   容器   代理   文档   通过   

前言

在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】

标签:ring   name   foo   user   --   容器   代理   文档   通过   

原文地址:http://www.cnblogs.com/may-cn/p/6215735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!