spring如何使用多个xml配置文件
来源:互联网 发布:phantomjs pdf python 编辑:程序博客网 时间:2024/05/21 18:44
1, 在web.xml中定义 contextConfigLocation参数.spring会使用这个参数加载.所有逗号分割的xml.如果没有这个参数,spring默认加载web-inf/applicationContext.xml文件.
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:conf/spring/applicationContext_core*.xml,
classpath*:conf/spring/applicationContext_dict*.xml, classpath*:conf/spring/applicationContext_hibernate.xml, classpath*:conf/spring/applicationContext_staff*.xml, classpath*:conf/spring/applicationContext_security.xml classpath*:conf/spring/applicationContext_modules*.xml classpath*:conf/spring/applicationContext_cti*.xml classpath*:conf/spring/applicationContext_apm*.xml </param-value></context-param>contextConfigLocation 参数定义了要装入的 Spring 配置文件。原理说明如下:
1.利用ServletContextListener 实现。
Spring 提供ServletContextListener 的一个实现类ContextLoaderListener ,该类可以作为listener 使用,它会在创建时自动查找WEB-INF/ 下的applicationContext.xrnl 文件。因此,如果只有一个配置文件,并且文件名为applicationContext.xml ,则只需在web.xml文件中增加如下代码即可:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>如果有多个配置文件需要载入,则考虑使用<context-para>即元素来确定配置文件的文件名。由于ContextLoaderListener加载时,会查找名为contextConfigLocation的参数。因此,配置context-param时参数名字应该是contextConfigLocation。
带多个配置文件的web.xml 文件如下:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!--确定多个配置文件--> <context-param> <!-- 参数名为contextConfigLocation--> <param-name>contextConfigLocation</param-name><!--多个配置文件之间以,隔开--><param-value>/WEB-INF/daoContext.xml,/WEB-INF/applicationContext.xml</param-value> </context-param><!--采用listener创建ApplicationContext 实例--><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>
如果没有contextConfigLocation 指定配置文件,则Spring 自动查找applicationContext. xrnl 配置文件。如果有contextConfigLocation,则利用该参数确定的配置文件。该参数指定的一个字符串, Spring 的ContextLoaderListener 负责将该字符串分解成多个配置文件,逗号","、空格" "及分号";"都可作为字符串的分割符。
如果既没有applicationContext. xrnl 文件,也没有使用contextConfigLocation参数确定配置文件,或者contextConfigLocation确定的配置文件不存在。都将导致Spring 无法加载配置文件或无法正常创建ApplicationContext 实例。
配置一个spring为加载而设置的servlet可以达到同样效果.
采用load-on-startup Servlet 实现。
Spring 提供了一个特殊的Servllet 类: ContextLoaderServlet。该Servlet 在启动时,会自动查找WEB-INF下的applicationContext. xml 文件。当然,为了让ContextLoaderServlet 随应用启动而启动,应将此Servlet 配置成load-on-startup 的Servlet load-on-startup 的值小一点比较合适,因为要保证Application Context 优先创建。如果只有一个配置文件,并且文件名为applicationContext. xml ,则在
web.xml 文件中增加如下代码即可:<servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>l</load-on-startup></servlet>带多个配置文件的web.xml 文件如下:<!-- XML 文件的文件头--><?xml version="1.0" encoding="utf-8"?><!-- web.xml 文件的DTD 等信息--><?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!-- 确定多个配置文件--><context-param> <!-- 参数名为contextConfigLocation--> <param-name>contextConfigLocation</param-name> <!-- 多个配置文件之间以,隔开-->
<param-value>/WEB-INF/daoContext.xml,/WEB-INF/applicationContext.xml</param-value></context-param><!--采用load-on-startup Servlet 创建ApplicationContext 实例--〉
<servlet> <servlet-narne>context</servlet-narne> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <!--下面值小一点比较合适,会优先加载--〉 <load-on-startup>l</load-on-startup></servlet></web-app>2, 使用匹配符<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value></context-param>比 如说用到Hibernate,则把hibernate相关的配置放在applicationContext-hibernate.xml这一个文件,而一 些全局相关的信息则放在applicationContext.xml,其他的配置类似.这样就可以加载了,不必写用空格或是逗号分开!3,如果是非j2ee应用直接程序加载.
ApplicationContext act = new ClassPathXmlApplicationContext(new String[]{"bean1.xml","bean2.xml"});BeanDefinitionRegistry reg = new DefaultListableBeanFactory();XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));BeanFactory bf = (BeanFactory)reg;
0 0
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- spring如何使用多个xml配置文件
- 如何使用多个Spring的xml配置文件
- Spring使用多个xml配置文件
- spring 在web.xml 里面如何使用多个xml配置文件
- spring 在web.xml 里面如何使用多个xml配置文件
- 如何使用多个Spring的xml配置文件(多模块配置)
- 如何使用多个Spring的xml配置文件(多模块配置)
- 如何 在Spring MVC中 使用多个Spring和MyBatis的xml配置文件(多模块配置)
- spring多个配置文件web.xml写法
- Spring配置多个XML配置文件
- web.xml加载多个spring配置文件
- Struts中使用多个xml配置文件
- 关于C++中输入函数cin的一些总结
- 【Java语言程序设计(基础篇)第10版 练习题答案】Practice_9_1
- 1800: [Ahoi2009]fly 飞行棋
- 【leetcode】【Easy】【453. Minimum Moves to Equal Array Elements】【math】
- 改变您的HTTP服务器的缺省banner
- spring如何使用多个xml配置文件
- 利用Caffe做回归(regression)
- splay tree讲解
- console的使用及引申的输入输出重定向问题
- poj1606 Jugs
- 洛谷 P1880 石子合并
- Leetcode027--插入区间
- Struts2工作原理
- 嵌入式软件开发笔试题