Spring配置文件元素<context:property-placeholder location="classpath:application.properties" />

 <context:property-placeholder location="classpath*:*.properties"
                                  ignore-unresolvable="true"/>

1.有些参数在某些阶段中是常量

比如:a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等

b、分布式应用中client端访问server端所用的server地址,port,service等

c、配置文件的位置

2.而这些参数在不同阶段之间又往往需要改变

比如:在项目开发阶段和交付阶段数据库的连接信息往往是不同的,分布式应用也是同样的情况。

期望:能不能有一种解决方案可以方便我们在一个阶段内不需要频繁书写一个参数的值,而在不同阶段间又可以方便的切换参数配置信息

解决:spring3中提供了一种简便的方式就是context:property-placeholder/元素

只需要在spring的配置文件里添加一句: 即可,这里location值为参数配置文件的位置,参数配置文件通常放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如:

#jdbc配置
test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/test
test.jdbc.username=root
test.jdbc.password=root
行内#号后面部分为注释

例子:我们在Spring配置文件中使用这个元素属性,那么我们就可以在下边的配置文件中直接使用EL表达式就可以实现取值操作:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close" autowire="no">
        <property name="fairQueue" value="false"/>
        <property name="minIdle" value="1"/>
        <property name="maxIdle" value="5"/>
        <property name="maxActive" value="5"/>
        <property name="initialSize" value="1"/>
        <property name="testOnBorrow" value="true"/>
        <property name="validationQuery" value="select 1"/>
        <property name="validationInterval" value="500000"/><!-- 5min -->
        <property name="removeAbandoned" value="true"/>
        <property name="removeAbandonedTimeout" value="30"/>
        <property name="driverClassName" value="${mysql.jdbc.driver}"/>
        <property name="url" value="${mysql.jdbc.url}"/>
        <property name="username" value="${mysql.jdbc.username}"/>
        <property name="password" value="${mysql.jdbc.password}"/>
    </bean>

这里的 ${mysql.jdbc.driver} 就是我们实现的效果,我们可以在其他的配置文件中配置这些变量,就可以直接使用:

mysql.jdbc.driver=com.mysql.jdbc.Driver
mysql.jdbc.url=jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&amp;characterEncoding=UTF-8&allowMultiQueries=true
mysql.jdbc.username=123
mysql.jdbc.password=123

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-30 16:32:06

Spring配置文件元素<context:property-placeholder location="classpath:application.properties" />的相关文章

java.lang.IllegalStateException: Failed to load property source from location &#39;classpath:/application.yml&#39;原因就是格式没有对齐导致的

导致报错原因就是格式问题,对齐就好了,百度竟然说编码导致的,郁闷 "C:\Program Files\Java\jdk1.8.0_101\bin\java" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=63341 -Dcom.sun.management.jm

&lt;util:properties id=&quot;propertiesReader&quot; location=&quot;classpath:jdbc.properties&quot;/&gt;

Property or field 'jdbc' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? // jdbc.username=scott jdbc.password=TIGER jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.driver=orac

Spring配置问题——元素 &quot;context:component-scan&quot; 的前缀 &quot;context&quot; 未绑定

今天配置完: <!-- 自动扫描与装配,包含子包 --> <context:component-scan base-package="cn.itcast.oa"></context:component-scan> 这句话之后,validating 我的spring配置文件就一直走不下去了.当时以为是myeclipse卡了,之后去掉了所有的validating. 后来写了个单元测试测试Spring配置的时候,发现报错: columnNumber:54;

服务器加载spring配置文件报context:component-scan节点未声明解决方法

关于jboss服务器启动,spring配置文件加载报错解决方法 The matching wildcard is strict, but no declaration can be found for element 'context:component-scan'. spring配置文件代码: <!-- 自动扫描的包名 --> <context:component-scan base-package="com.regaltec.gtfhr.*,cn.tisson.*"

Spring框架中Spring配置文件中&lt;context:annotation-config/&gt;标签说明

<context:annotation-config/>此标签的重要作用就是: 省去系统繁琐的注解标签,加上一个此标签,就可以在此项目程序添加“注解”的功能,使系统识别相应的注解功能!! 详解: <context:annotation-config/>标签的作用是隐式地向 Spring 容器注册AutowiredAnnotationBeanPostProcessor. CommonAnnotationBeanPostProcessor. PersistenceAnnotationB

spring错误:&lt;context:property-placeholder&gt;:Could not resolve placeholder XXX in string value XXX

spring同时集成redis和mongodb时遇到多个资源文件加载的问题 这两天平台中集成redis和mongodb遇到一个问题 单独集成redis和单独集成mongodb时都可以正常启动程序,但是当两个同时集成进去时就会报以下问题 Could not resolve placeholder 'mongo.port' in string value "${mongo.port} 百思不得解后,经多方搜集查证,终于找到问题原因. 在spring的xml配置文件中当有多个*.properties文

spring配置:context:property-placeholder 读取配置文件信息 在配置文件中使用el表达式填充值

spring将properties文件读取后在配置文件中直接将对象的配置信息填充到bean中的变量里. 原本使用PropertyPlaceholderConfigurer类进行文件信息配置.PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接口,能够对<bean/>中的属性值进行外在化管理. <bean id="propertyPlaceholderConfigurer" class="org.s

spring 配置文件 引入外部的property文件的两种方法

spring  的配置文件 引入外部的property文件的两种方法 <!-- 引入jdbc配置文件    方法一 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <lis

应用中有多个Spring Property PlaceHolder导致@Value只能获取到默认值

背景 工作中负责的一套计费系统需要开发一个新通知功能,在扣费等事件触发后发送MQ,然后消费MQ发送邮件或短信通知给客户.因为有多套环境,测试时需要知道是从哪套环境发出的邮件,又不想维护多套通知模板,因此就打算在各环境的properties中声明不同的title前缀,实现类似[DEV]您的xx月账单.[TEST]您的xx月账单的效果,但是这个前缀需要在生产环境中去掉,因此我想到用Spring @Value的默认值来实现,伪代码如下: @Value("${notice.mail.titlePrefi