该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-16
// ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); // BeanFactory factory = (BeanFactory)context; // MonitorServer ce = (MonitorServer) factory.getBean("monitorServer"); 类似于上面的这种,通过种种方式得到测试中都遇到资源耗尽的严重bug, 于是找高手请教,得到如下解决方法:而且效率很高,很易用。下面是代码L package org.company.xxx; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * * 获取spring容器,以访问容器中定义的其他bean * @author lyltiger * @since MOSTsView 3.0 2009-11-16 */ public class SpringContextUtil implements ApplicationContextAware { // Spring应用上下文环境 private static ApplicationContext applicationContext; /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境 * * @param applicationContext */ public void setApplicationContext(ApplicationContext applicationContext) { SpringContextUtil.applicationContext = applicationContext; } /** * @return ApplicationContext */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 获取对象 * 这里重写了bean方法,起主要作用 * @param name * @return Object 一个以所给名字注册的bean的实例 * @throws BeansException */ public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); } } z只要将其类放在工程中的合适位置,直接用类名使用,无论何时何地…… 使用: java类中: MonitorServer md = (MonitorServer)SpringContextUtil.getBean("monitorServer");//bean的名称 spring配置文件中: <bean id="monitorServer" class="com.company.xxxxx.MonitorServer"> <property name="dataSource" ref="dataSource" /> </bean> 这样就可以得到我们想要的bean了,里面的方法随意调用,得到我们想要的数据。 OK! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-17
我晕 直接把第一行代码改成
# // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); # // MonitorServer ce = (MonitorServer) context.getBean("monitorServer"); 不就得了 |
|
返回顶楼 | |
发表时间:2010-03-17
zhoulei984623 写道 我晕 直接把第一行代码改成
# // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); # // MonitorServer ce = (MonitorServer) context.getBean("monitorServer"); 不就得了 你可以试试,会耗尽资源的! |
|
返回顶楼 | |
发表时间:2010-03-17
lyltiger 写道 zhoulei984623 写道 我晕 直接把第一行代码改成
# // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); # // MonitorServer ce = (MonitorServer) context.getBean("monitorServer"); 不就得了 你可以试试,会耗尽资源的! 当然,每次都初始化Spring环境,不耗才怪呢,楼主的相当不错的,学习了 |
|
返回顶楼 | |
发表时间:2010-03-17
H_eaven 写道 此贴已删! 不懂这位同志的意思! |
|
返回顶楼 | |
发表时间:2010-03-17
原来是以反复调用为前提的。。。。。这个当然要用单例 呵呵
|
|
返回顶楼 | |
发表时间:2010-03-17
zhoulei984623 写道 原来是以反复调用为前提的。。。。。这个当然要用单例 呵呵
呵呵,请教! |
|
返回顶楼 | |
发表时间:2010-03-17
kidd3166 写道 lyltiger 写道 zhoulei984623 写道 我晕 直接把第一行代码改成
# // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); # // MonitorServer ce = (MonitorServer) context.getBean("monitorServer"); 不就得了 你可以试试,会耗尽资源的! 当然,每次都初始化Spring环境,不耗才怪呢,楼主的相当不错的,学习了 谢谢! 有些东西并不是一种就可以是万能的最优的,拿出来交流了,择其优者而用之也!益人益己,益己益人 |
|
返回顶楼 | |
发表时间:2010-03-17
kidd3166 写道 lyltiger 写道 zhoulei984623 写道 我晕 直接把第一行代码改成
# // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","spring-xxxxx.xml"}); # // MonitorServer ce = (MonitorServer) context.getBean("monitorServer"); 不就得了 你可以试试,会耗尽资源的! 当然,每次都初始化Spring环境,不耗才怪呢,楼主的相当不错的,学习了 “每次都初始化Spring环境”是什么意思? 虚心请教。 |
|
返回顶楼 | |
发表时间:2010-03-17
这里讨论的问题有点幼稚。。。
|
|
返回顶楼 | |