当前位置: 首页 > news >正文

springboot3加密配置文件的值

实现方案:自定义加密配置处理器

1.新增一个自定义处理器的类

@Component
public class EncryptedPropertyProcessor implements EnvironmentPostProcessor {public static final String NACOS_DECRYPT_SECRET_KEY = "LgZOYR7vaBFzihJt";private static final String ENCRYPTED_PREFIX = "encrypted:";@Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment,SpringApplication application) {Map<String, Object> decryptedProperties = new HashMap<>();for (PropertySource<?> propertySource : environment.getPropertySources()) {if (propertySource instanceof EnumerablePropertySource) {processPropertySource((EnumerablePropertySource<?>) propertySource, decryptedProperties);}}if (!decryptedProperties.isEmpty()) {environment.getPropertySources().addFirst(new MapPropertySource("decryptedProperties", decryptedProperties));}}private void processPropertySource(EnumerablePropertySource<?> propertySource,Map<String, Object> decryptedProperties) {for (String propertyName : propertySource.getPropertyNames()) {Object value = propertySource.getProperty(propertyName);if (value instanceof String && ((String) value).startsWith(ENCRYPTED_PREFIX)) {String encryptedValue = ((String) value).substring(ENCRYPTED_PREFIX.length());try {String decryptValue = new String(Aes.decrypt(Aes.hexString2Bytes(encryptedValue), NACOS_DECRYPT_SECRET_KEY), "utf-8");decryptedProperties.put(propertyName, decryptValue);} catch (Exception e) {throw new RuntimeException("Failed to decrypt property: " + propertyName, e);}}}}

加解密方式可自行封住方法,比较灵活

2. 注册处理器

在 src/main/resources/META-INF/spring.factories 中添加:

org.springframework.boot.env.EnvironmentPostProcessor=com.yourpackage.EncryptedPropertyProcessor

重启项目后会根据处理器类覆盖解密后的yml配置的值

http://www.dtcms.com/a/486633.html

相关文章:

  • 抗干扰汽车微型网络(RAMN)开源测试平台的设计
  • wordpress 评测谷歌seo优化什么意思
  • C++手撕无锁线程池
  • kettle Spoon.bat启动报错:could not create the java virtual machine
  • 连云港做网站企业网站建设简单合同
  • DB-GPT AWEL工作流引擎深度解析
  • 提升应用性能:Go中的同步与异步处理
  • OpenAI 最新开源模型 gpt-oss 架构与训练解析
  • 网站片区韶关网站seo
  • 红帽Linux复习-从命令行管理文件、创建查看编辑文本文件
  • C++11(lambda和包装器)
  • 时钟特性约束(四)
  • 免费公司网站如何建立设计品牌网页设计
  • jQuery 尺寸
  • 做木工网站天河建设网站公司排名
  • 嵌入式软件--STM32 SPI通信(上)
  • PHP “真异步“ TrueAsync SAPI 与 NGINX Unit 集成
  • ARCGIS国土超级工具集1.7更新说明
  • 网站如何做信息表美图在线图片编辑器
  • 分布式专题——45 ElasticSearch基础数据管理详解
  • SQLBot:基于大模型与 RAG 的智能问数系统架构
  • 网站系统维护要多久福清市建设工程交易网站好像
  • 在Linux系统上执行 setenv CDS_XVNC_TENBASE + 后重启Virtuoso的作用
  • SpringBoot用户登录注册系统设计与实现
  • 杭州余杭做网站公司秦皇岛 网站建设
  • 并查集-990.等式方程的可满足性-力扣(LeetCode)
  • Jmeter是如何实现接口关联的?
  • 企业网站做seo的必要性关于网站开发人员的薪资
  • 【Qt】6.Qt对象树
  • 使用Scanpy的基本操作