方案一
SpringBoot
在配置文件application
中配置的关于数据库连接信息,在实际使用时是转换为DataSource
类,那么只要将SpringBoot
实现的DataSource
继承类中, 将实际密文解密即可。通过查看源码可得知,SpringBoot
中DataSource
实现类为HikariDataSource
,那么我们通过BeanPostProcessor
在实例化HikariDataSource
时, 替换密文即可。代码如下
1 | spring: |
1 |
|
方案二
使用 jasypt
1 | <dependency> |
开启
1 |
|
自定义处理器解密处理器
1 | spring: |
1 |
|
方案三
根据方案二的实现原理,使用BeanFactoryPostProcessor
实现一个自动解密配置文件的处理器
1 | spring: |
1 |
|
1 | public class DecodeBeanFactoryPostProcessor implements BeanFactoryPostProcessor { |
其中需要注意的是,DecodeBeanFactoryPostProcessor
的实例化需要在ApplicationContext
加载成功后再去实例化,确保ConfigurableEnvironment
已被正确初始化