浏览 13317 次
锁定老帖子 主题:spring 依赖注入到直接new 对象
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-27
当为遗留系统加入spring时,经典问题就是遗留系统需要引用spring管理的bean。幸好spring有机制可以处理这些。 package net.blogjava.chenlb;
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * 此类可以取得Spring的上下文. * Spring 使new方法创建的对象可以引用spring管理的bean. * 2007-10-18 上午11:12:33 * @author chenlb */ public class SpringContext implements ApplicationContextAware { protected static ApplicationContext context; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static ApplicationContext getContext() { return context; } }
<bean id="springContext" class="net.blogjava.chenlb.SpringContext"></bean>
MyBean myBean = (MyBean) SpringContext.getContext().getBean("myBean");
package net.blogjava.chenlb;
public class MyServerFactory { public static MyBean1 getMyBean1() { return (MyBean1) SpringContext.getContext().getBean("myBean1"); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-29
为什么不把要用到spring的bean配置到ApplicationContext里面?
|
|
返回顶楼 | |
发表时间:2007-11-01
有遗留系统的类没法配置到spring的bean里.
|
|
返回顶楼 | |
发表时间:2007-11-02
谢谢这个帖子 。。正好我需要加载一个bean,,但没有办法注入近来。。使用一些方法总是有些问题。。这个代码正好完全满足我的要求
|
|
返回顶楼 | |
发表时间:2007-11-06
谢谢,正好可以用上了。
如果楼主能够给多点代码,或者完整一点的就好了。总感觉这样给出草草的。 PS:大侠们,给个入门没话说,投隐藏就真无语了! |
|
返回顶楼 | |
发表时间:2007-11-13
看来,也有人同我这样应用需要的朋友.
我在两个项目遇到这个问题,而且都这种方式解决,个人觉得还没有发现更好的解决方式.
其中一个项目是重做的,重做的时候不用之前做好的一些东西. 之前的类在构造函数里要初始化一此资源(现在
这此被spring管理了), 所以这此类的构造里要引用spring管理的bean, 解决方法是:
SpringContext.getContext()...
第二个项目是,系统要用到一个组件,这个组件是用xml定义生成对象的,所以这些生成的对象不能引用spring管
理的bean,
解决方式是:在这个组件xml定义的类里用工厂方法模式:
public static PrintManager getPrintManager() {
return (PrintManager) SpringContext.getContext().getBean("printManager");
}
所有用到PrintManager(spring管理的)的类(定义不能放到spring中,而是放到组件xml定义的)都用
ServerFactory.getPrintManager()得到spring管理的PrintManager
有时间整理一下,我在项目的用过的这种模式,与大家一起讨论.
javaeye编辑帖子,很不爽,不会分段. :o
|
|
返回顶楼 | |
发表时间:2007-11-13
引用 看来,也有人同我这样应用需要的朋友. 我在两个项目遇到这个问题,而且都这种方式解决,个人觉得还没有发现更好的解决方式. 其中一个项目是重做的,重做的时候不用之前做好的一些东西. 之前的类在构造函数里要初始化一此资源(现在 这此被spring管理了), 所以这此类的构造里要引用spring管理的bean, 解决方法是: SpringContext.getContext()... 第二个项目是,系统要用到一个组件,这个组件是用xml定义生成对象的,所以这些生成的对象不能引用spring管 理的bean, 解决方式是:
在这个组件xml定义的类里用工厂方法模式: public static PrintManager getPrintManager() { return (PrintManager) SpringContext.getContext().getBean("printManager"); } 所有用到PrintManager(spring管理的)的类 (定义不能放到spring中,而是放到组件xml定义的) 都用 ServerFactory.getPrintManager()得到spring管理的PrintManager 有时间整理一下, 我在项目的用过的这种模式,与大家一起讨论. javaeye编辑帖子,很不爽,不会分段. 手动bbcode |
|
返回顶楼 | |