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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值