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=)
验证步骤
- 清理项目构建缓存(Maven执行
clean install,Gradle执行clean build) - 启动应用,检查是否仍存在
ClassCastException - 测试加密属性是否能正常解密加载
内容的提问来源于stack exchange,提问作者Thirumurugan
相关产品推荐
相关产品推荐

