标签:des style blog http io color os ar java
在 WEB 开发中,可能会非常少须要显示的获得 ApplicationContext 来得到由 Spring 进行管理的某些 Bean, 今天我就遇到了,在这里和大家分享一下, WEB 开发中,怎么获取 ApplicationContext
一 要想怎么获取 ApplicationContext, 首先必须明确 Spring 内部 ApplicationContext 是如何存储的。以下我们来跟踪一下源代码
首先:从大家最熟悉的地方開始
上面这一段,大家非常熟悉吧。好,让我们看一看它究竟实现了些啥。
显然,ContextLoaderListener实现了ServeletContextListenet,在ServletContext初始化的时候,会进行Spring的初始化,大家肯定会想,Spring的初始化应该与ServletContext有一定关系吧?有关系吗?接下来让我们进入
ContextLoader.initWebApplicationContext方法
从上面的代码大家应该明确了Spring初始化之后,将ApplicationContext存到在了两个地方,那么是不是意味着我们能够通过两种方式取得ApplicationContext?
第一种获取方式:
注意:WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE = WebApplicationContext.class.getName() + ".ROOT";
即为 "org.springframework.web.context.WebApplicationContext.ROOT"
那么咱们是不是能够这样获得ApplicationContext:
确实能够,并且我们想到这样的方法的时候,Spring早就提供给我们接口了:
getWebApplicationContext方法例如以下:
哈哈,明确了吧,它和我们自己实现的方法是一样的。
这样的方法一般用在你自定义了一个Listener而且实现了ServletContextListener接口,在web.xml中你须要把这个Listener配置好
<!-- 用于做初始化工作的监听器,一定要配置到Spring的ContextLoaderListener之后,由于要用到Spring的容器对象 --> <listener> <listener-class>cn.itcast.oa.Utils.InitListener</listener-class> </listener>实现这个监听器的类例如以下:
public class InitListener implements ServletContextListener { //启动时,为最大的作用于初始化 public void contextInitialized(ServletContextEvent sce) { // 获取容器与相关的Service对象 ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); PrivilegeService privilegeService = (PrivilegeService) ac.getBean("privilegeServiceImpl"); // 准备数据:topPrivilegeList List<Privilege> topPrivilegeList = privilegeService.findTopList(); sce.getServletContext().setAttribute("topPrivilegeList", topPrivilegeList); System.out.println("------------> 已准备数据 <------------"); } public void contextDestroyed(ServletContextEvent arg0) { } }
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:这样的方式适用于採用Spring框架的独立应用程序,须要程序通过配置文件手工初始化Spring的情况。
然后。。。。。获取的这个ApplicationContext对象后你就能够getBean()了。。。。。啦啦
參考 http://www.blogjava.net/Todd/archive/2010/04/22/295112.html
标签:des style blog http io color os ar java
原文地址:http://www.cnblogs.com/yxwkf/p/4067248.html