Spring的PropertyPlaceholderConfigurer
自己的总结
在项目中,为了对系统的配置信息进行统一管理,一般是将配置信息写在xxx.properties的文件中,在系统初始化的时候,自动读取该配置文件中的键值信息,实现资源配置的初始化
1.PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor接口的一个实现
2.PropertyPlaceholderConfigurer起的作用就是将xxx.properties中定义的属性和值,在java类或xml中通过占位符的形式获取xxx.properties文件中定义的属性值
具体用法
1.例如xxx.properties配置中的信息如下:
#数据库数据库相关 druid.driverClassName=com.mysql.jdbc.Driver druid.url=jdbc\:mysql\://localhost\:3209/demo?useUnicode\=true&characterEncoding\=utf-8&generateSimpleParameterMetadata\=true druid.username=root druid.password=demo123
2.PropertyPlaceholderConfigurer在Spring.xml中的配置方法
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:*.properties</value> </list> </property> </bean>
3.应用
(1)在spring.xml中数据库连接池的配置中的使用
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="false"> <property name="url" value="${druid.url}" /> <property name="username" value="${druid.username}" /> <property name="password" value="${druid.password}" /> <property name="driverClassName" value="${druid.driverClassName}" /> <property name="minIdle" value="${druid.minIdle}" /> <property name="initialSize" value="${druid.initialSize}" /> <property name="maxWait" value="${druid.maxWait}" /> <property name="maxActive" value="${druid.maxActive}" /> <property name="testWhileIdle" value="${druid.testWhileIdle}" /> <property name="validationQuery" value="${druid.validationQuery}" /> <property name="filters" value="${druid.filters}" /> </bean>
(2)在java类中的使用
public class DatasourceUtil {
@Value("${druid.driverClassName}")
private String className;
@Value("${druid.url}")
private String url;
@Value("${druid.username}")
private String username;
@Value("${druid.password}")
private String password;
public JdbcTemplate getJdbcTemplate() {
DriverManagerDataSource ds = new DriverManagerDataSource(url, username, password);
ds.setDriverClassName(className);
JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
return jdbcTemplate;
}
}