当前位置:  首页  >  前端开发  >  设计思想

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

问题如题,本文给出一个解决方案,满足以下要求:(1)Web启动时能自动获取Spring的上下文,从而用户可以随意的获取其中的Bean。(2)在单文件测试环境中,亦可以根据配置文件路径加载Spring上下文。大致原理为:Spring启动时,会给任何一个实现了ApplicationContextAware接口的Bean

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

(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); } }

内容推荐:免费高清PNG素材下载
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4