PropertyPlaceholderConfigurer的使用

来源:互联网 发布:2017网络神曲排行榜 编辑:程序博客网 时间:2024/05/29 18:59

在使用SpringMVC做Web开发的时候,为了便于统一管理配置项,常常会看到用占位符的配置方式。这样,可以将分散在spring配置文件中的配置项的值集中到一个(多个)属性文件中,方便管理。

配置spring加入properties文件的位置。通过配置PropertyPlaceholderConfigurer的bean实现

    <!-- 定义受环境影响易变的变量 -->

    <beanid="propertyPlaceHolder"

       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

       <propertyname="systemPropertiesModeName"value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>

       <propertyname="ignoreResourceNotFound"value="true"/>

       <propertyname="locations">

           <list>

              <!--通配符说明见文章底部-->

              <value>classpath*:config/dev/schedule.xml</value>

              <value>classpath*:config/dev/cron.properties</value>

           </list>

       </property>

    </bean>

schedule.xml的内容:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd">

<properties>

    <comment>MyProject PropertiesXML</comment>

    <!-- 以下是Hibernate配置-->

    <entrykey="hibernate.dialect">com.iflytek.sgy.yzt.schedule.support.SystemOracle10gDialect</entry>

    <entrykey="hibernate.show_sql">false</entry>

    <entrykey="hibernate.format_sql">false</entry>

    <entrykey="hibernate.ehcache_config_file">/ehcache/ehcache-hibernate-local.xml</entry>

 

    <!-- 日志配置 -->

    <entrykey="log-level">info</entry>

    <entrykey="log-filepath">/myProject.log</entry>

   

    <!--    数据源参数配置 --> 

    <entrykey="database.driver.class.name">oracle.jdbc.pool.OracleConnectionPoolDataSource</entry>

    <entrykey="database.url">实际值</entry>

    <entrykey="database.username">实际值</entry>

    <entrykey="database.password">实际值</entry>

    <entrykey="database.validation.query">select 1 from dual</entry>

   

</properties>

 

cron.properties内容是quzrtz定时器的任务设定时间(有想了解的道友可以参考http://blog.csdn.net/wu020708/article/details/60144961):

cronExpression.DataSendJob=0/30*** * ?

cronExpression.DataReceiveJob=* 0/1 * **?

定一个bean使用properties:

    <beanid="yztDataSource"class="org.apache.commons.dbcp.BasicDataSource"

       destroy-method="close">

       <propertyname="driverClassName"value="${database.driver.class.name}"/>

       <propertyname="url"value="${database.url}"/>

       <propertyname="username"value="${database.username}"/>

       <propertyname="password"value="${database.password}"/>

       <propertyname="validationQuery"value="${database.validation.query}"/>

</bean>

 

Spring的Ant模式通配符匹配,从能一个路径匹配一批资源。

       Ant路径通配符支持“?”、“*”、“**”,注意通配符匹配不包括目录分隔符“/”:

         “?”:匹配一个字符,如“config?.xml”将匹配“configA.xml”;

         “*”:匹配零个或多个字符串,如“com/*/config.xml”将匹配“com/wu/config.xml”,但不匹配匹配“com/config.xml”;而“com/config*.xml”将匹配“com/configAnyNane.xml”;

         “**”:匹配路径中的零个或多个目录,如“com/**/config.xml”将匹配“com /config.xml”,也匹配“com/my/pro/config.xml”;而“com/my/config**.xml”将匹配“com/my/configAnyName.xml”,即把“**”当做两个“*”处理。

classpath 和 classpath* 区别:classpath:只会到你指定的class路径中查找找文件;classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

web.xml中定义:classpath*:META-INF/spring/application-context.xml

那么在META-INF/spring这个文件夹底下的所有application-context.xml都会被加载到上下文中,这些包括META-INF/spring文件夹底下的 application-context.xml,META-INF/spring的子文件夹的application-context.xml以及jar中的application-context.xml;

如果在web.xml中定义的是:classpath:META-INF/spring/application-context.xml

那么只有META-INF/spring底下的application-context.xml会被加载到上下文中。

0 0
原创粉丝点击