总览:
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;
版权归原作者 qq_39250932 所有, 如有侵权,请联系我们删除。