方案一
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已被正确初始化