Class ConfigFilter

  • All Implemented Interfaces:
    Filter, Wrapper, NotificationBroadcaster, NotificationEmitter

    public class ConfigFilter
    extends FilterAdapter
     这个类主要是负责两个事情:解密和下载远程的配置文件
     [解密]
    
     DruidDataSource dataSource = new DruidDataSource();
     //dataSource.setXXX 其他设置
     //下面两步很重要
     //启用config filter
     dataSource.setFilters("config");
     //使用RSA解密(使用默认密钥)
     dataSource.setConnectionProperties("config.decrypt=true");
     dataSource.setPassword("加密的密文");
    
     [远程配置文件]
     DruidDataSource dataSource = new DruidDataSource();
     //下面两步很重要
     //启用config filter
     dataSource.setFilters("config");
     //使用RSA解密(使用默认密钥)
     dataSource.setConnectionProperties("config.file=http://localhost:8080/remote.propreties;");
    
     [Spring的配置解密]
    
     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
         <property name="password" value="加密的密文" />
         <!-- 其他的属性设置 -->
         <property name="filters" value="config" />
         <property name="connectionProperties" value="config.decrypt=true" />
     </bean>
    
     [Spring的配置远程配置文件]
    
     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
         <property name="filters" value="config" />
         <property name="connectionProperties" value="config.file=http://localhost:8080/remote.propreties; />
     </bean>
    
     [使用系统属性配置远程文件]
     java -Ddruid.config.file=file:///home/test/my.properties ...
    
     远程配置文件格式:
     1. 其他的属性KEY请查看 @see com.alibaba.druid.pool.DruidDataSourceFactory
     2. config filter 相关设置:
     #远程文件路径
     config.file=http://xxxxx(http://开头或者file:开头)
    
     #RSA解密, Key不指定, 使用默认的
     config.decrypt=true
     config.decrypt.key=密钥字符串
     config.decrypt.keyFile=密钥文件路径
     config.decrypt.x509File=证书路径
    
     
    Author:
    Jonas Yang