一个数据连接文件,比如jdbc.properties,这个大家相信都很熟悉了,比如:
<context:property-placeholder location='database.properties'/>
用法:
[code="java"]
<bean id='dataSource' destroy-method='close'
class='org.apache.commons.dbcp.BasicDataSource'>
<property name='driverClassName' value='${jdbc.driverClassName}'/>
<property name='url' value='${jdbc.url}'/>
<property name='username' value='${jdbc.username}'/>
<property name='password' value='${jdbc.password}'/>
</bean>
[/code]
如果是用bean注入,则为:
[code="java"]
@Value('${jdbc.driverClassName}') private String driverClassName;
@Value('${jdbc.url}') private String dbUrl;
@Value('${jdbc.username}') private String dbUserName;
@Value('${jdbc.password}') private String dbPassword;
@Bean
public BasicDataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(dbUrl);
dataSource.setUsername(dbUserName);
dataSource.setPassword(dbPassword);
return dataSource;
}
[/code]
介绍下特别用法,比如要假设sa是默认的username的值的话,可以这样:
<property name='username' value='${jdbc.username:sa}'/>
就是用冒号隔开了
另外一个特性为嵌套解析,比如:
phase=qa
jdbc.username.qa=abc
jdbc.username.dev=def
则:
<property name='username' value='${jdbc.username.${phase}}'/>
看明白了么?其实就是,比如很常见的是生产环境和测试环境不同的
数据库,则当phase为qa的时候,spring配置文件中自动会去设置
jdbc.username.qa的值为abc,当phase设置为dev的时候,自动设置
jdbc.username.qa的值为def