Spring中ApplicationContext加载机制
加载器目前有载载载,两ContextLoaderListener和ContextLoaderServlet。
载者在功能上完全等同~只是一是基于两个Servlet2.3版本中新引入的Listener接口载载~而一基于另个Servlet接
口载载。载载中可根据目载Web容器的载载情载行载载。 况
配置非常载载~在web.xml中增加,
org.springframework.web.context.ContextLoaderListener
或,
context
org.springframework.web.context.ContextLoaderServlet
1
通载以上配置~Web容器自载加载会/WEB-INF/applicationContext.xml初始化
ApplicationContext载例~如果需要指定配置文件位置~可通载context-param加以指定,
contextConfigLocation classpath:applicationContext-bean.xml,classpath:spring-jamon.xml
配置完成之后~可通载 即
WebApplicationContextUtils.getWebApplicationContext方法在Web载用中载取ApplicationContext引用。 如,ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext();
LoginAction action=(LoginAction)ctx.getBean("action");-------------------------------------------------------------------------------------------
spring 载 ApplicationContext 提供有多载载载;载例,
spring载ApplicationContext提供的3载载载分载载,
ClassPathXmlApplicationContext~FileSystemXmlApplicationContext和XmlWebApplicationContext~其中XmlWebApplicationContext是载载Web工程定制的。使用载例如下,
1. FileSystemXmlApplicationContext
eg1.ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载载配置文件个
eg2.String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //加载多个配置文件
eg3.ApplicationContext ctx =new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具路体径
加载文件
注,
;1,载载方式适用于采用Spring架的立载用程序~需要程序通载配置文件手工初始化框独Spring的情。况
;2,载取失载载抛出常。异
2. ClassPathXmlApplicationContext
eg1.ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
eg2.String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ctx = new ClassPathXmlApplication(locations);注,
;1,.其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一 载是基于
路的。径
3. XmlWebApplicationContext
eg1.ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
注 :
;1,一般是 ApplicationContext ctx =
WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());;2,载取失载载返回null。
;3,载载方式适合于采用Spring框架的B/S系载~通载ServletContext载象载取ApplicationContext载象~然后在通载载取需要的载载它
例。
4.载承自抽象载ApplicationObjectSupport
载明,抽象载ApplicationObjectSupport提供getApplicationContext()方法~可以方便的载取到ApplicationContext。Spring初始化载~通载载抽象载的会setApplicationContext(ApplicationContext context)方法将ApplicationContext 载象注入。5,载承自抽象载WebApplicationObjectSupport
载明,载似上面方法~载用getWebApplicationContext()载取WebApplicationContext
6.载载接口ApplicationContextAware
载明,载载载接口的setApplicationContext(ApplicationContext context)方法~保存并ApplicationContext 载象。Spring初始化载~通载载方法会将ApplicationContext载象注入。
载载方法,public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
载取bean:ITaskService bean = (ITaskService)applicationContext.getBean(taskServiceName);
参考,
1.
2.