springboot项目单独对数据源配置加解密

项目要求对数据源相关的配置,也就是数据库的密码要单独做加解密处理。引入开源框架使用现有的算法是满足不了的,行里提供了单独的算法。也就是上线的时候我们并不知道数据库密码,要通过文件解密出密码进行设置。

文章实现原理是实现BeanPostProcessor,这是bean创建完成后的后置处理接口,spring框架提供的入口。DataSourceProperties bean创建完成后也会调用后置处理,只需要对bean中的数据库密码重新设置就能达到要求。

java 复制代码
@Component
public class DBPasswordDe implements BeanPostProcessor {
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof DataSourceProperties) {
            System.out.println(bean + " : " + beanName);
            DataSourceProperties dataSourceProperties = (DataSourceProperties) bean;
            dataSourceProperties.setPassword("root");
        }
        return bean;
    }
}