Druid数据库密码加密

1、基础配置

spring:
  profile: dev
  datasource:
    url: jdbc:mysql://ip:port/dbname?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: dbusername
    publicKey: MFwwDQYJKoZIhvcNAQEBBQADsdfsd9ADc0y2ptYenp1wrpQTi9N/0NfkMmM2ZOECAwEAAQ==
    password: Di8pRWAKci69WO3WcTBlsfdsdksXeT9lP1RkQN8kKcg1dUxsgXbIg==
    initial-size: 5
    min-idle: 5
    #    max-idle: 8
    max-active: 20
    #配置获取连接等待超时的时间
    max-wait: 5000
    #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    time-between-eviction-runs-millis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    min-evictable-idle-time-millis: 300000
    validation-query: SELECT 1 FROM DUAL
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
    pool-prepared-statements: false
    max-pool-prepared-statement-per-connection-size: 20
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,slf4j,config
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: config.decrypt=false;publicKey=${spring.datasource.publicKey};passWord=${spring.datasource.password}
    # 合并多个DruidDataSource的监控数据
    useGlobalDataSourceStat: true

主要配置filters: stat,slf4j,config和connectionProperties: config.decrypt=false;publicKey=spring.datasource.publicKey;passWord={spring.datasource.publicKey};passWord=spring.datasource.publicKey;passWord={spring.datasource.password}

2、回调函数处理密码

@Slf4j
@Component
public class GiserDruidPasswordCallback extends DruidPasswordCallback {

    @Value("${spring.datasource.password}")
    private String passWord;

    @Value("${spring.datasource.publicKey}")
    private String publicKey;

    @Override
    public void setProperties(Properties properties) {
        super.setProperties(properties);
        try {
            String decryptPwd = ConfigTools.decrypt(publicKey, passWord);
            setPassword(decryptPwd.toCharArray());
        } catch (Exception e) {
            log.error("Druid ConfigTools.decrypt", e);
        }
    }
}

3、数据库配置,设置回调函数

@Configuration
public class DruidConfig {
    @Autowired
    private GiserDruidPasswordCallback giserDruidPasswordCallback;

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean(initMethod = "init")
    @Primary
    public DruidDataSource druid() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setPasswordCallback(giserDruidPasswordCallback);
        return druidDataSource;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值