博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在代码中获取ApplicationContext实例
阅读量:6968 次
发布时间:2019-06-27

本文共 1638 字,大约阅读时间需要 5 分钟。

基于Spring的Java应用会通过ApplicationContext接口提供应用程序配置。我们常常需要在代码中获取当前的ApplicationContext。如在集成测试时,需要通过ApplicationContext获取各种Bean。这时可以使用FileSystemXmlApplicationContext通过提供配置文件的路径,来得到应用程序上下文:

String[] paths = { "applicationContext.xml", ...};ApplicationContext ctx = new FileSystemXmlApplicationContext(paths);SomeBean bean = (SomeBean) ctx.getBean("someBean");

在实际生产中,往往会根据不同的客户情况部署不同的配置,所以配置文件不能写死在代码中。这时应该通过HttpServlet来获取应用程序上下文。比如,我们可以定义一个ApplicationContextWrapper类,提供全局的ApplicationContext

public class ApplicationContextWrapper {        private static ApplicationContext applicationContext;           public synchronized static void setApplicationContext(ApplicationContext context) {        applicationContext = context;    }    public static ApplicationContext current() {        return applicationContext;    }    public static Object getBean(String beanName) {        return applicationContext.getBean(beanName);    }}

同时,要自定义一个HttpServlet,在init方法中通过传入的ServletConfigWebApplicationContextUtils来设置ApplicationContextWrapper

public class ApplicationContextLoaderServlet extends HttpServlet {      public void init(ServletConfig config) throws ServletException {        ApplicationContextWrapper.setApplicationContext(            WebApplicationContextUtils.getWebApplicationContext(                config.getServletContext()));    }}

当然,不要忘了在web.xml中配置这个servlet:

ApplicationContextLoaderServlet
net.kirin.sample.ApplicationContextLoaderServlet
1

这样就可以在代码中使用ApplicationContext了:

DataSource dataSource = (DataSource) ApplicationContextWrapper.getBean("dataSource");

转载地址:http://akssl.baihongyu.com/

你可能感兴趣的文章
android studio 2.0 错误记录
查看>>
iOS——格式化简单的HTTP POST
查看>>
互联网时代: 从Uber的供需匹配看开发需求
查看>>
Android Studio 3.0 如何生成 aar 并使用?
查看>>
Hbase/HbaseRest
查看>>
设置ToggleButton、Switch、CheckBox和RadioButton的显示效果
查看>>
Bootstrap 页面标题(Page Header)
查看>>
SVN版本还原
查看>>
使用SpringMVC创建支持向下兼容的版本化的API接口
查看>>
Chrome 显示 err_cert_authority_invalid 的处理方式
查看>>
简单理解倒排索引
查看>>
SpringAop在实际项目中的使用案例
查看>>
哪个对象才是锁?
查看>>
this关键字
查看>>
Python中字符串和datetime
查看>>
ng-Cordova插件之fileTransfer的使用
查看>>
基于struts1.框架的异常处理方案
查看>>
浅谈 Qt 内存管理
查看>>
【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】
查看>>
Flume中关于HDFS的sink配置
查看>>