總覽:
locator:NacosDecryptPropertySourceLocator.java
繼承NacosPropertySourceLocator并重寫locate方法,在nacos自身的熱更新配置置入propertySources前將解密后的propertySource放入spring更新environment的隊列(spring在更新environment時遇到同名的propertySource會優(yōu)先選擇更早放入的,所以本功能為@Order(-1),在正常的NacosPropertySourceLocator之前執(zhí)行。
processor: InitializedBeanFactoryPostProcessor.java
實現(xiàn)BeanFactoryPostProcessor,主要作用是在spring加載本地bootstrap文件時將其中配置的nacos密碼解密,以便獲取遠(yuǎn)程配置文件
encryptor:SM4Encryptor.java
算法根據(jù)自己需要來選擇,在上述兩個類中提供解密方法。本處因公司要求選擇商密4號SM4。
utils:CommonUtils
jasypt包內(nèi)的同名util,只使用其中的判斷是否有加密前后綴 【ENC()】及去除前后綴功能,及分割字符串封裝方法substringAfter,substringBefore
resource/META-INF/spring.factories
使用spi機制,beanFactoryPostProcessor及propertySourceLocator在其中聲明才能被spring框架加載。
代碼實現(xiàn)
InitializedBeanFactoryPostProcessor.java 部分詳見
https://blog.csdn.net/qq_39250932/article/details/126864888?spm=1001.2014.3001.5502,本處為復(fù)用代碼。文章來源:http://www.zghlxwxcb.cn/news/detail-632432.html
locator:NacosDecryptPropertySourceLocator.java文章來源地址http://www.zghlxwxcb.cn/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;
到了這里,關(guān)于spring項目本地配置及nacos遠(yuǎn)端配置的解密(不依賴jasypt框架)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!