spring 加载配置文件的相关配置总结

PropertyPlaceholderConfigurer
      注意: Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>),其余的会被Spring忽略掉。
Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的Bean
就会停止对剩余PropertyPlaceholderConfigurer的扫描(Spring 3.1已经使用PropertySourcesPlaceholderConfigurer替代PropertyPlaceholderConfigurer了)。

一:配置单个Properties文件

 

<bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location">
          <value>classpath:config/sysconfig/sysconfig.properties</value>
      </property>
  </bean>

<bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location" value="classpath:config/sysconfig/sysconfig.properties"/>
 </bean>

二:配置多个Properties文件

<bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
       <list>
        <value>classpath:config/dbconfig/database.properties</value>
        <value>classpath:config/sysconfig/sysconfig.properties</value>
        <value>file:/opt/demo/config/demo-mq.properties</value>
    </list>
     </property>
   </bean>

三:简化操作
为简化PropertyPlaceholderConfigurer的使用,Spring提供了<context:property-placeholder/>元素。下面给出了配置示例,启用它后,开发者便不用配置PropertyPlaceholderConfigurer对象了。

<context:property-placeholder location="classpath:jdbc.properties"/>

四:参考用例

1.

1. applicationContext.xml
<bean id="deployProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations" >
        <list>
            <value>classpath:config/dbconfig/database.properties</value>
            <value>classpath:config/sysconfig/sysconfig.properties</value>
        </list>
        </property>
    </bean>
 // 其中classpath是引用src目录下的文件写法

<import resource="classpath:config/spring/spring-data.xml" /> 

spring-data.xml
<context:property-placeholder  properties-ref="deployProperties" />

2.

applicationContext.xml
<context:property-placeholder location="classpath:config/*config/*.properties"/>   

3.

applicationContext.xml
 <bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
       <list>
        <value>classpath:config/dbconfig/database.properties</value>
        <value>classpath:config/sysconfig/sysconfig.properties</value>
        <value>file:/opt/demo/config/demo-mq.properties</value>
    </list>
     </property>
   </bean>

4.

applicationContext.xml
   <bean   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="1" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="location" value="classpath:config/dbconfig/database.properties"/>
    </bean>
    <bean   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="2" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="location" value="classpath:config/sysconfig/sysconfig.properties"/>
    </bean> 

其中order属性代表其加载顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的 Placeholder,如配置了多个PropertyPlaceholderConfigurer,则需设置为true

5.

applicationContext.xml
  <bean id="dbResources" class="java.util.ArrayList">
        <constructor-arg>
        <list>
            <value>classpath:config/dbconfig/database.properties</value>
            <value>classpath:config/sysconfig/sysconfig.properties</value>
        </list>
        </constructor-arg>
    </bean> 

<bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations" ref="dbResources">

     </property>
   </bean>

6.

applicationContext.xml
    <bean id="configproperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations" >
        <list>
            <value>classpath:config/dbconfig/database.properties</value>
            <value>classpath:config/sysconfig/sysconfig.properties</value>
        </list>
        </property>
   </bean>
   <bean id="deployProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="properties" ref="configproperties">
       </property>
   </bean>  

7.context 标签和PropertyPlaceholderConfigurer 混合在一起要加ignoreUnresolvablePlaceholders

<context:property-placeholder location="classpath:config/*config/database.properties"/>

 <bean   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="2" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="location" value="classpath:config/sysconfig/sysconfig.properties"/>
    </bean>

纯属个人总结和网络搜索的资料

时间: 2024-10-08 17:45:52

spring 加载配置文件的相关配置总结的相关文章

spring加载配置文件

spring加载配置文件 1.把applicationContext.xml直接放在WEB-INF/classes下,spring会采用默认的加载方式2.采用在web.xml中配置ContextLoaderListenera或ContextLoaderServlet指定加载路径方式.3 通过ClassPathXmlApplicationContext或XmlWebApplicationContext代码动态加载!

spring加载配置文件无法解析占位符问题:Could not resolve placeholder &#39;from&#39; in string value &quot;${from}&quot;

Could not resolve placeholder 'from' in string value "${from}" 解决: 在spring的xml配置文件中当有多个*.properties文件需要加载时, 应当集中在一个xml文件中加载,建议在主xml文件中加载,即(applicationContext.xml)中加载, 这样就不需要关注 子xml文件 与 *.properties 加载顺序问题 加载多个*.properties文件,以','隔开 <context:pr

Spring 加载配置文件的方式

我们常用的加载context文件的方法有如下三个: 1.FileSystemXmlApplicationContext 这个方法是从文件绝对路径加载配置文件,例如: ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml "); 如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径

Spring加载配置文件的几种方法(org.springframework.beans.factory.BeanDefinitionStoreException)

一:Spring中的几种容器都支持使用xml装配bean,包括:XmlBeanFactory ,ClassPathXmlApplicationContext ,FileSystemXmlApplicationContext ,XmlWebApplicationContext 加载这些容器的配置文件的xml有一下几种常见的方法: 1:引用资源用XmlBeanFactory(不能实现多个文件相互引用) Resource resource = new ClassPathResource("appcon

spring加载配置文件的两种方式

一 . <bean id="jdbcProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">       <property name="locations">           <list>               <value>classpath:jdbc.prop

SpringBoot加载配置文件(@[email&#160;protected]@Value)

情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里面,然后通过@importSource来加载.xml文件将配置加载到spring环境中,通过@value或者PropertyUtil来引入对应配置的值.于是发现了以下问题,并根据这些问题进行了问题拓展. 问题描述 1.在.xml引入PropertyPlaceholderConfigurer时,若项目

spring加载多个配置文件如何配置

为应用指定多个配置文件: 多个配置文件的关系: 并列 包含 并列关系 即有多个配置文件,需要同时加载这多个配置文件: 可以使用可变参数,数组和统配符进行加载: 可变参数 String config1 = "com/abc/di08/spring-student.xml"; String config2 = "com/abc/di08/spring-school.xml"; //加载配置文件,生成spring容器对象(多个字符串参数加载多个配置文件) Applicat

spring加载jar包中多个配置文件(转)

转自:http://evan0625.iteye.com/blog/1598366 在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:beanconfigs/applicationContext_1.xml, classpath*:

spring加载jar包中的多个配置文件[转载]

在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:beanconfigs/applicationContext_1.xml, classpath*:beanconfigs/applicationContext_2.xml, ...