druid 加密数据源:如何拦截 Druid 数据源自动注入完成帐密的解密?

本文探讨了在SpringBoot项目中,当Druid数据源的账号密码被加密后,如何在自动装配之前进行解密处理。通过分析源码,模仿Druid的数据源装配过程,创建自定义的DataSourceProperties和DataSource Bean,实现在装配前解密配置信息。文章还讨论了@Configuration类中@Bean方法的代理机制以及装配顺序,提供了加密数据源的解密流程和遇到的问题及启示。
摘要由CSDN通过智能技术生成

背景

SpringBoot 项目,使用 Druid 自动装配的数据源,数据源的帐号密码配置加密后,如何完成数据源的装配呢?

druid-spring-boot-starter 虽然自带了加密配置,但是密钥也是配置的,如果需要用自定义的加密解密工具,如果不用自带的工具,怎么自定义实现加密数据源的装配呢?

本文从 DruidDataSourceAutoConfigure 类源码入手,仿造该类,自定义一个数据源注入配置,在真正注入 DruidDataSource 之前,对 druid 配置信息完成解密。

主要思考三个问题:

  1. 自定的 Configuration 类中的 @Bean 注入一个 DruidDataSource ,为什么比自动装配的时机早呢?
  2. 如果自定义一个自动装配类, 包含DataSourceProperties 属性,对它的帐号密码解密后,让它在DruidDataSourceAutoConfigure 类之前装配,怎么实现呢?
  3. 自动装配类的工作原理是什么?注入优先级怎么确定的?

加密数据源自主实现流程

Not registered via @EnableConfigurationProperties, 
marked as Spring component, 
or scanned via @ConfigurationPropertiesScan 
复制代码

@ConfigurationProperties 用法限制,我想到一个解决办法,为当前类加上 @Component,同时制定一个不可能的注入条件:@ConditionalOnProperty(prefix = "xx",name = "xxx", havingValue = "impossible")

不用官方的加密插件,自定义 Druid 的解密配置,我想到的方法是完全仿照 Druid 数据源的自动装配过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值