`
lang330965445
  • 浏览: 3892 次
文章分类
社区版块
存档分类
最新评论

使用多个spring配置文件及原理

阅读更多
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-param>元素来确定配置文件的文件名。由于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口-arne>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</
servlet-class>
   <load-on-startup>l</load-o 口-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;

分享到:
评论

相关推荐

    spring配置文件模板

    《Spring配置文件模板详解》 在Java开发领域,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力,成为了企业级应用开发的重要选择。而...

    Hibernate、Spring和Struts工作原理及使用理由

    【标题】:“Hibernate、Spring和Struts工作原理及使用理由” 【内容】: Hibernate是一个流行的Java持久化框架,它的核心工作原理主要包括以下步骤: 1. **读取并解析配置文件**:Hibernate通过读取hibernate....

    springIoc实现原理

    **四、Spring配置** Spring Ioc容器的配置可以通过以下三种方式进行: 1. **XML配置**:早期Spring常用的方式,所有bean的定义都在XML文件中,如`beans.xml`。 2. **Java配置**:使用@Configuration和@Bean注解,...

    浅谈SpringBoot2.4 配置文件加载机制大变化

    浅谈SpringBoot2.4 配置文件加载机制大变化 Spring Boot 2.4 中的配置文件加载机制发生了重大变化,这些...这些变化将影响到应用程序的配置文件加载方式,开发者需要了解这些变化以便更好地使用 Spring Boot 2.4。

    针对SSH框架Spring管理Hibernate连接多个数据源配置文件

    该配置文件连接的是两个数据库结构相同的数据源,其他比如数据库结构不原理也可行。本人在遇到此问题时上网搜了很多答案结果都不怎么如意,有的太深奥不过思想很好,有的又太不给力,后来自己慢慢研究配置成功后想与...

    spring-security多登录页面配置

    从给定的部分内容来看,我们可以看到这是一个Spring Security的配置文件,使用了Spring Security的XML命名空间。下面是一个示例性的配置片段: ```xml &lt;!-- 允许访问登录页面 --&gt; &lt;!-- 静态资源不受保护 -...

    Struts2与Spring之间的整合方法与原理

    - **Spring配置文件**:通常,主Spring配置文件是`applicationContext.xml`,放在WEB-INF目录下。配置文件中定义了Bean及其依赖关系。可以通过`contextConfigLocation`参数指定多个配置文件的位置。 - **修改...

    spring cloud config、bus源码

    Spring Cloud Config/Bus 源码解读 本文将对 Spring Cloud Config/Bus 的源码进行解读,涵盖 Server ...通过对源码的分析,可以更好地理解 Spring Cloud Config/Bus 的工作机制,并更好地使用这个框架来管理配置文件。

    MyBatis-Spring配置教程,非常适合初学者

    在Spring配置文件中,定义一个PlatformTransactionManager bean,通常使用DataSourceTransactionManager,并将数据源关联起来。这样,Spring就能自动管理事务的开始、提交、回滚。 为了实现AOP(面向切面编程),...

    对Spring中注解怎么实现的一些基本原理

    例如,当存在多个符合依赖注入条件的Bean时,Spring可能无法自动决定注入哪一个,此时可能需要使用`@Primary`或`@Qualifier`进行明确指定。另外,对于复杂的配置需求,可能需要结合XML配置文件或Java配置类来补充。 ...

    Spring PropertyPlaceholderConfigurer配置文件加载器集成ZooKeeper来实现远程配置读取

    5. 在Spring配置文件中声明`ZooKeeperPropertyPlaceholderConfigurer`,并配置ZooKeeper连接信息。 6. 使用`@Value`注解或其他方式引用配置,Spring会在启动时从ZooKeeper读取并注入值。 这个过程涉及到的知识点...

    Spring Cloud Stream 体系及原理.zip

    开发者可以定义多个输入和输出绑定,构建复杂的流处理拓扑。 2. **Binder** Binder 提供了与具体消息中间件(如RabbitMQ、Kafka、AWS Kinesis等)的抽象层。这样,应用可以在不修改代码的情况下切换不同的消息平台...

    Spring框架原理及详细搭建步骤

    最后,我们将详细介绍Spring的搭建流程,包括环境搭建、项目结构设计以及相关配置文件的编写。 在搭建Spring框架时,通常需要配置Spring的核心XML文件,其中定义了各种bean及其依赖关系。开发者可以使用XML方式或者...

    Spring框架的设计原理及设计模式分析 2

    Spring框架由多个组件构成,其中最为核心的部分包括Core、Context和Beans。 1. **Spring的骨骼架构** - **Core**:提供了Spring框架的基本功能,如依赖注入、类型转换、事件传播和资源处理等基础服务。 - **...

    spring mvc案例+配置+原理详解+架包

    1. **Hello World**:创建第一个Spring MVC项目,实现简单的“Hello, World!”展示。 2. **表单提交**:处理POST请求,接收并显示表单数据。 3. **RESTful API**:创建RESTful服务,支持GET、POST、PUT、DELETE等...

    使用xDoclet自动生成Spring的bean的配置文件

    在IT行业中,自动化是提升效率的关键之一,而xDoclet正是这样一个工具,它能帮助我们自动地生成Spring框架中的bean配置文件。这篇文章将深入探讨如何使用xDoclet以及它在Spring环境中的应用。 首先,xDoclet是一款...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版).pdf

    Spring框架由多个模块组成,其中最核心的包括: #### 1. **Spring Core** 和 **Beans** 模块 - **Spring Core** 提供了框架的基本组成部分,包括IoC容器。 - **Spring Beans** 定义了BeanFactory接口,它是工厂模式...

    Spring Boot 文件上传原理解析

    总的来说,理解Spring Boot文件上传原理的关键在于掌握Spring MVC的`MultipartResolver`接口及其实现,以及如何在Spring Boot中配置和使用这些组件来处理文件上传请求。这使得开发者能够安全有效地处理用户上传的...

    springcloud部署redis集群

    总的来说,部署SpringCloud中的Redis集群涉及多方面知识,包括Redis的基础知识、集群原理、SpringBoot的配置以及Spring Data Redis的使用。理解这些内容,你就可以构建出稳定、高效的Redis集群服务,为SpringCloud...

Global site tag (gtag.js) - Google Analytics