You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot升级至2.7.10遇Jasypt类型转换异常求助

解决Spring Boot 2.7.10升级后Jasypt类型转换异常问题

问题根源

Spring Boot 2.x重构了配置属性的处理逻辑,引入了ConfigurationPropertySourcesPropertySource类型管理配置源。你使用的Jasypt 1.12版本是针对Spring Boot 1.x开发的,其EncryptablePropertySourceWrapper类无法适配Spring Boot 2.x的新类型,直接导致类型转换失败。

具体解决方案

1. 锁定适配Spring Boot 2.7.x的Jasypt版本

直接使用对应Spring Boot 2.x的Jasypt Spring Boot Starter版本,3.0.5版本完全适配Spring Boot 2.7.x。替换你的依赖配置:

Maven示例:

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

Gradle示例:

implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'

2. 清理旧依赖冲突

确保项目彻底移除旧的Jasypt 1.12依赖:

  • 检查pom.xml/build.gradle中是否直接声明了旧版本依赖,删除它
  • 使用依赖分析工具(如Maven的dependency:tree或Gradle的dependencies任务)排查传递依赖,排除任何引入旧版本的模块

3. 简化冗余配置(可选)

改用starter后,可去掉以下手动配置:

  • 启动类上的@EnableEncryptableProperties注解(starter会自动启用加密配置)
  • 自定义的EncryptablePropertySource相关Bean

4. 验证加密属性格式

确保加密属性符合默认格式(前缀ENC(,后缀)),例如:

db.password=ENC(加密后的字符串)

若需自定义前缀后缀,在application.properties中添加:

jasypt.encryptor.property.prefix=CUSTOM_ENC(
jasypt.encryptor.property.suffix=)

验证步骤

  1. 清理项目构建缓存(Maven执行clean install,Gradle执行clean build)
  2. 启动应用,检查是否仍存在ClassCastException
  3. 测试加密属性是否能正常解密加载

内容的提问来源于stack exchange,提问作者Thirumurugan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:15:21