Spring——IOC容器(常用装载文件方式)

一、BeanFactory加载文件(默认【懒加载】配置,加载文件时,不会生成实例,仅在getBean()获取该实例时new对象)

1.FileSystemResource 系统文件路径装载与解析xml文档

 

① 相对路径
Resource resource =  new FileSystemResource("applicationContext_1.xml");
Resource resource =  new FileSystemResource("config/applicationContext_2.xml");
② 绝对路径
Resource resource =  new FileSystemResource("E:\\zhaorong\\workspace\\day01_spring_ioc容器\\applicationContext_1.xml");

 

注意:相对路径是相对于项目根目录

 

1 BeanFactory factory= new XmlBeanFactory(resource);

 

2. ClassPathResource 根据类路径装载并解析xml文档(推荐这种方式)

 

1 Resource resource = new ClassPathResource("config/applicationContext_3.xml");
2 BeanFactory factory= new XmlBeanFactory(resource);

 

 注意:路径相对于src的路径

 

二、ApplicationContext加载文件(【非懒加载】配置,加载文件时,生成所有实例,同时对xml文件配置信息进行校验)

1.FileSystemXmlApplicationContext 系统文件路径装载与解析xml文档

2. ClassPathXmlApplicationContext 根据类路径装载并解析xml文档-----------【推荐使用】

{

 

1 //读取多个配置文件
2         String[] configLocations = new String[]{"applicationContext.xml","applicationContext4.xml"};
3         BeanFactory factory = new ClassPathXmlApplicationContext(configLocations);

 

 

 

}

注意:这两种方法与BeanFactory加载文件的相同,只是生成实例的时机不同

3. XmlWebApplicationContext:通过ContextLoaderListener从内部导入context文件(结合web环境使用)(需添加支持web开发jar包: spring-web.jar)

 

1 XmlWebApplicationContext factory = new XmlWebApplicationContext();
2         factory.setServletContext(request.getSession().getServletContext());//配置application应用环境
3         factory.setConfigLocation("/WEB-INF/applicationContext.xml");//配置applicationContext.xml路径
4         factory.refresh();

 

 

 

注意:默认路径/WEB-INF/applicationContext.xml,相对路径于网站根

4.WebApplicationContext:通过ContextLoaderListener从内部导入context文件(结合web环境使用)

 

① 需添加支持web开发jar包: spring-web.jar
② 在web.xml添加监听:
<!-- spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置applicationContext.xml路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>

 

 

1 ServletContext application = request.getSession().getServletContext();
2 WebApplicationContext factory = WebApplicationContextUtils.getWebApplicationContext(application);

 

posted @ 2016-12-01 18:34  龙之天族  阅读(736)  评论(0编辑  收藏  举报