您现在的位置是:首页  >  前端 >  前端开发 设计思想

如何在Web启动时获取Spring 上下文环境

博主 添加时间:2014-11-19 17:06:25 【设计思想】 热度:72人已围观

问题如题,本文给出一个解决方案,满足以下要求:

(1)Web启动时能自动获取Spring 的上下文,从而用户可以随意的获取其中的Bean。

(2)在单文件测试环境中,亦可以根据配置文件路径加载Spring上下文。


大致原理为:

Spring 启动时,会给任何一个实现了ApplicationContextAware接口的Bean(也可以叫做类),注入一个构造函数参数:applicationContext。

有了这样的一个类,就可以在自己的代码里轻松的获取上下文了。

编写这样的一个类还有个好处,那就是,对于类被调用时,没有通过web启动的方式(那么也就不会注入),根据上下文对象判空可以判断。

这样的一个类的源码为:

import org.apache.tiles.velocity.template.GetAsStringDirective;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class MyBeanFactory implements ApplicationContextAware{

	public static ApplicationContext context = null;
	
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
	{
		if(context==null)
		{
			context =applicationContext;
		}
		System.out.println("ApplicationContext setter is called...");
	}

	public static ApplicationContext getApplicationContext() {
		
			if(context==null)
			{ //本地调试
				context = new FileSystemXmlApplicationContext("/WebContent/WEB-INF/config/spring-context.xml");
			}
	     	return context;
		
	}
	
	public static Object getBean(String name)
	{
		if(context==null)
		{
			context = getApplicationContext();
		}
		return context.getBean(name);
	}
}

  • 相关文章

文章评论

博客名片

职业:PHP程序员

现居:河南省-洛阳市

博客地址:www.lizongyang.cn

Email:5708837@qq.com

站点信息

  • 建站时间:2019-03-25
  • 网站程序:李宗洋博客
  • 联系电话:15888888888
  • 文章统计4084篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们

打赏本站

  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!
  • 微信扫码:你说多少就多少~
  • 支付宝扫码:你说多少就多少~

客服在线

服务时间

周一至周日 9:00-21:00