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