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;
    }

}
原文地址:https://www.cnblogs.com/super-yu/p/8527041.html