0


spring项目本地配置及nacos远端配置的解密(不依赖jasypt框架)

总览:

locator:NacosDecryptPropertySourceLocator.java
继承NacosPropertySourceLocator并重写locate方法,在nacos自身的热更新配置置入propertySources前将解密后的propertySource放入spring更新environment的队列(spring在更新environment时遇到同名的propertySource会优先选择更早放入的,所以本功能为@Order(-1),在正常的NacosPropertySourceLocator之前执行。

processor: InitializedBeanFactoryPostProcessor.java
实现BeanFactoryPostProcessor,主要作用是在spring加载本地bootstrap文件时将其中配置的nacos密码解密,以便获取远程配置文件

encryptor:SM4Encryptor.java
算法根据自己需要来选择,在上述两个类中提供解密方法。本处因公司要求选择商密4号SM4。

utils:CommonUtils
jasypt包内的同名util,只使用其中的判断是否有加密前后缀 【ENC()】及去除前后缀功能,及分割字符串封装方法substringAfter,substringBefore

resource/META-INF/spring.factories
使用spi机制,beanFactoryPostProcessor及propertySourceLocator在其中声明才能被spring框架加载。

代码实现

InitializedBeanFactoryPostProcessor.java 部分详见
https://blog.csdn.net/qq_39250932/article/details/126864888?spm=1001.2014.3001.5502,本处为复用代码。

locator:NacosDecryptPropertySourceLocator.java

CompositePropertySource composite =(CompositePropertySource)super.locate(env);for(PropertySource propertySource : composite.getPropertySources()){NacosPropertySource delegate =(NacosPropertySource)propertySource;Map source = delegate.getSource();// 同上处理加密密文
    …………………………
    source.put(key, decrypt);}return composite;
标签: spring java 后端

本文转载自: https://blog.csdn.net/qq_39250932/article/details/128727712
版权归原作者 qq_39250932 所有, 如有侵权,请联系我们删除。

“spring项目本地配置及nacos远端配置的解密(不依赖jasypt框架)”的评论:

还没有评论