总览:
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,本处为复用代码。文章来源:https://www.toymoban.com/news/detail-632432.html
locator:NacosDecryptPropertySourceLocator.java文章来源地址https://www.toymoban.com/news/detail-632432.html
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项目本地配置及nacos远端配置的解密(不依赖jasypt框架)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!