Spring的contextConfigLocation

Spring的contextConfigLocationspring如何使用多个xml配置文件1,在web.xml中定义contextConfigLocation参数.spring会使用这个参数加载.所有逗号分割的xml.如果没有这个参数,spring默认加载web-inf/applicationContext.xml文件.例如:<context-param><param-name>conte…

大家好,又见面了,我是你们的朋友全栈君。

spring如何使用多个xml配置文件
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,
    </param-value>
</context-param> 

 
contextConfigLocation 参数定义了要装入的 Spring 配置文件。
原理:利用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 文件如下:

<1-- XML 文件的文件头二〉
<web-app>
<!一确定多个配置文件>
<context-param>
<1-- 参数名为contextConfigLocation…〉
<param-name>contextConfigLocation</param-name>
<!一多个配置文件之间以,隔开二〉
<param-value>/WEB-工NF/daoContext.xml./WEB-INF/application
Context.xml</param-value>
</context-param>
<!-- 采用listener创建ApplicationContext 实例-->
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

如 果没有contextConfigLocation 指定配置文件,则Spring 自动查找applicationContext.xml 配置文件。如果有contextConfigLocation,则利用该参数确定的配置文件。该参数指定的一个字符串,Spring 的ContextLoaderListener 负责将该字符串分解成多个配置文件,逗号”,”、空格” “及分号”;”都可作为字符串的分割符。如果既没有applicationContext.xml 文件,也没有使用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 的值小一点比较合适,因为要保证ApplicationContext 优先创建。如果只有一个配置文件,并且文件名为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 文件如下:

<web-app>
<'一确定多个配置文件一>
<context-param>
<!-- 参数名为contextConfigLocation-->
<param-name>contextConfigLocation</param-name>
<!-- 多个配置文件之间以,隔开一 --!>
<param-value>/WEB-工NF/daoContext.xml, !WEB-工NF/applicationContext.
xml</param-value>
</context-param>
<!一采用load-on-startup Servlet 创建Applicat工onContext 实例一〉
<servlet>
<servlet-narne>context</servlet-narne>
<servlet-class>org.springframework.web.context.ContextLoader
Servlet</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, 如果使用struts加载多个spring配置文件.

下面这个配置的其实也是contextConfigLocation变量.struts-config.xml里面加这个
<plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>
<set-property property=”contextConfigLocation” value=”/WEB-INF/applicationContext.xml,
/WEB-INF/action-servlet.xml,,,,,,,”/>

4,如果是非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;

 

转载于:https://www.cnblogs.com/powerwu/articles/3969835.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159198.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月14日 上午6:16
下一篇 2022年7月14日 上午6:16


相关推荐

  • Java Manifest

    Java ManifestJavaManifest直接使用Javaclass文件来运行程序,但一般发布和运行JAR(JavaArchive)文件,JAR文件是class文件的ZIP压缩存档。Manifest描述了Jar文件的打包、运行信息。JDK提供了用于处理Manifest信息的API,详细的信息请见java.util.jar包,通过给JarFile传递jar文件的路径,然后调用JarFile的

    2025年6月15日
    9
  • cache与虚拟存储的异同点_多级cache

    cache与虚拟存储的异同点_多级cache1. cache是指(高速缓冲存储器)。2.计算机系统的三级存储器结构指的是(高速缓冲存储器)、(主存储器)、(辅助存储器)3. 在多级存储体系中,cache的主要功能是(提高存储速度),虚拟存储器的主要功能是(扩大存储容量)。4. 计算机系统对存储器的要求是(容量大)、(速度快)、(成本低)。为了解决这三个方面的矛盾,计算机采用多级存储器体系结构

    2026年4月14日
    4
  • gff文件_GFF文件格式简介

    gff文件_GFF文件格式简介鉴于代码的排版问题 建议在电脑上阅读本文 组装得到基因组的序列只是开展基因组研究的第一步 基因的结构是基因组后续功能研究的基石 在 NCBI 中 除了提供基因组序列外 还提供了基因结构的信息 采用的就是 GFF 格式 human 示例如下 GFF 全称 GenericFeatu 描述了基因组上各种特征的区间信息 包括染色体 基因 转录本等 GFF 文件本质上是一个 t 分隔的 共 9 列的纯文本文件

    2026年3月26日
    2
  • calico工作原理_Calico原理

    calico工作原理_Calico原理容器网络的解决方案跨节点的容器网络要解决两个问题 容器如何分配 IPflannel 设计了一种全局的网络地址分配机制 即使用 etcd 存储网段和节点之间的关系 然后 flannel 配置各个节点上的 Docker 或其他容器工具 只在分配到当前节点的网段里选择容器 IP 地址 这样就确保了 IP 地址分配的全局唯一性 容器 IP 地址如何路由 overlay 网络 vxlanudp 直接路由 host gateway 在 overl

    2026年3月19日
    2
  • 改变Keil5所有窗口的背景颜色[通俗易懂]

    改变Keil5所有窗口的背景颜色[通俗易懂]在网上找了很多都没有找到如何更改Keil5左侧和下侧的背景颜色,后来根据一些提示找到了改背景的方法,在此分享给有需要的人。前面相信很多人都会该,不过我还是写一下,…

    2022年6月20日
    269
  • Coredump(tracedump)

    引言当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(core文件),这种行为就叫做CoreDump或者叫做‘核心转储’,利用coredump可以帮助我们快速定位程序崩溃位置开启coredump终端输入命令:ulimit-a用来显示对进程的一些限制限制,其中第一行表示了core文件最大的大小限制(单位为blocks)默认是…

    2022年4月12日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号