Spring Boot 3.5升级后Jasypt环境变量解密失效的问题咨询与可行方案寻求
Spring Boot 3.5升级后Jasypt环境变量解密失效的问题咨询与可行方案寻求
我最近在项目升级时踩了个大坑:把Spring Boot从3.4.7版本升级到3.5.3后,原本用jasypt-spring-boot库解密环境变量的功能直接失效了!
查了半天原因,发现是Spring Boot的一项性能优化导致的——这项优化针对系统环境属性源做了逻辑简化,直接绕过了我们用Jasypt包装的EncryptableSystemEnvironmentPropertySourceWrapper,转而直接访问底层的属性Map,等于完全跳过了解密逻辑。
我也看到Jasypt相关项目里已经有人提过这个问题,里面给的临时方案对我们项目不适用:有人说把SystemEnvironmentPropertySource包装进CompositePropertySource里,这样Spring就不会把它识别成系统环境属性源,那项性能优化就不会触发,解密逻辑就能正常跑。但这么做之后,新问题又来了:其他环境变量的绑定开始出问题,推测是因为Spring没认出这是系统环境属性源,就没加载对应的SystemEnvironmentPropertyMapper,导致属性映射逻辑失效。
我翻了Spring Boot的源码,发现不管是改jasypt-spring-boot的逻辑,还是找个新地方插入解密逻辑,都没什么直接可行的路子。所以想请教下:
- Spring Boot官方有没有推荐的扩展点,用来加这种环境变量解密的逻辑?
- 有没有更靠谱的临时方案能解决这个问题,又不会引入其他副作用?
真心求各位大佬给点思路,万分感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

