详细介绍Spring使用多个xml配置文件的代码实例

spring使用多个xml配置文件,有需要的朋友可以参考下。

1, 在web.xml中定义 contextConfigLocation参数.spring会使用这个参数加载.所有逗号分割的xml.如果没有这个参数,spring默认加载web-inf/applicationContext.xml文件.

contextConfigLocationclasspath*: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.xmlclasspath*:conf/spring/applicationContext_modules*.xmlclasspath*:conf/spring/applicationContext_cti*.xmlclasspath*:conf/spring/applicationContext_apm*.xml

contextConfigLocation 参数定义了要装入的 Spring 配置文件。原理说明如下:

1.利用ServletContextListener 实现。
Spring 提供ServletContextListener 的一个实现类ContextLoaderListener ,该类可以作

为listener 使用,它会在创建时自动查找WEB-INF/ 下的applicationContext.xrnl 文件。因
此,如果只有一个配置文件,并且文件名为applicationContext.xml ,则只需在web.xml

文件中增加如下代码即可:

org.springframework.web.context.ContextLoaderListener

如果有多个配置文件需要载入,则考虑使用文件名。由于ContextLoaderListener加载时,会查找名为contextConfigLocation的参数。

因此,配置context-param时参数名字应该是contextConfigLocation。
带多个配置文件的web.xml 文件如下:

<1-- XML 文件的文件头二〉< 1-- web.xm1 文件的DTD 等信息一〉<1-- 参数名为contextConfigLocation…〉contextConfigLocation<!一多个配置文件之间以,隔开二〉/WEB-工NF/daoContext.xml./WEB-INF/applicationContext.xmlorg.spr工ngframework.web.context.ContextLoaderListener

如果没有contextConfigLocation 指定配置文件,则Spring 自动查找application
Context. xrnl 配置文件。如果有contextConfigLocation,则利用该参数确定的配置文件。

该参数指定的一个字符串, Spring 的ContextLoaderListener 负责将该字符串分解成多个
配置文件,逗号”,”、空格” “及分号”;”都可作为字符串的分割符。

如果既没有applicationContext. xrnl 文件,也没有使用contextConfigLocation参数确
定配置文件,或者contextConfigLocation确定的配置文件不存在。都将导致Spring 无法

加载配置文件或无法正常创建ApplicationContext 实例
配置一个spring为加载而设置的servlet可以达到同样效果.

采用load-on-startup Servlet 实现。
Spring 提供了一个特殊的Servllet 类: ContextLoaderServlet。该Servlet 在启动时,会

自动查找WEB-IN日下的applicationContext. xml 文件。
当然,为了让ContextLoaderServlet 随应用启动而启动,应将此Servlet 配置成

load-on-startup 的Servleto load-on-startup 的值小一点比较合适,因为要保证Application
Context 优先创建。如果只有一个配置文件,并且文件名为applicationContext. xml ,则在

web.xml 文件中增加如下代码即可:

contextorg.springframework.web.context.ContextLoaderServletl

。带多个配置文件的web且nl 文件如下:

<! -- web.xml 文件的DTD 等信息→contextConfigLocation<!-- 多个配置文件之间以,隔开一〉/WEB-工NF/daoContext.xml, !WEB-工NF/applicationContext.xml<!一采用load-on-startup Servlet 创建Applicat工onContext 实例一〉contextorg.springframework.web.context.ContextLoaderServlet<!一下面值小一点比较合适,会优先加载一〉l

2, 使用匹配符

contextConfigLocation/WEB-INF/applicationContext*.xml

比 如说用到Hibernate,则把hibernate相关的配置放在applicationContext-hibernate.xml这一个文件,而一

些全局相关的信息则放在applicationContext.xml,其他的配置类似.这样就可以加载了,不必写用空格或是逗号分开!

3, 如果使用struts加载多个spring配置文件.下面这个配置的其实也是contextConfigLocation变量.
struts-config.xml里面加这个


4,如果是非j2ee应用直接程序加载.

ApplicationContext act = new ClassPathXmlApplicationContext(newString[]{"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;

最后,解释以下classpath*:与classpath的区别:

classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.

以上就是详细介绍Spring使用多个xml配置文件的代码实例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1428914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 01:35:46
下一篇 2025年12月10日 02:25:47

相关推荐

发表回复

登录后才能评论
关注微信