1.有些参数在某些阶段中是常量java
好比 :a、在开发阶段咱们链接数据库时的链接url,username,password,driverClass等 mysql
b、分布式应用中client端访问server端所用的server地址,port,service等 web
c、配置文件的位置spring
2.而这些参数在不一样阶段之间又每每须要改变sql
好比:在项目开发阶段和交付阶段数据库的链接信息每每是不一样的,分布式应用也是一样的状况。数据库
指望:能不能有一种解决方案能够方便咱们在一个阶段内不须要频繁书写一个参数的值,而在不一样阶段间又能够方便的切换参数配置信息分布式
解决:spring3中提供了一种简便的方式就是context:property-placeholder/元素url
只须要在spring的配置文件里添加一句:<context:property-placeholder location="classpath:jdbc.properties"/> 便可,这里location值为参数配置文件的位置,参数配置文件一般放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如:spa
#jdbc配置orm
test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/test
test.jdbc.username=root
test.jdbc.password=root
行内#号后面部分为注释
应用:
1.这样一来就能够为spring配置的bean的属性设置值了,好比spring有一个jdbc数据源的类DriverManagerDataSource
在配置文件里这么定义bean:
<bean id="testDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${test.jdbc.driverClassName}"/>
<property name="url" value="${test.jdbc.url}"/>
<property name="username" value="${test.jdbc.username}"/>
<property name="password" value="${test.jdbc.password}"/>
</bean>
2.甚至能够将${ }这种形式的变量用在spring提供的注解当中,为注解的属性提供值