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

Spring Framework 6.1迁移:javax.cache:cache-api:1.1.1是否兼容?

Spring 6.1升级中JCache/Ehcache的适配方案

核心结论

你当前使用的javax.cache:cache-api:1.1.1完全无法在Spring Framework 6.1.1中正常工作——因为Spring 6.x基于Jakarta EE 9+规范,彻底移除了对javax命名空间API的兼容,所有javax相关的缓存类都会引发编译或运行时错误。

具体适配步骤

  1. 替换JCache API依赖
    把原javax版本的API替换为Jakarta命名空间的官方实现:

    // 移除旧依赖
    // implementation 'javax.cache:cache-api:1.1.1'
    // 添加新依赖
    implementation 'jakarta.cache:jakarta.cache-api:2.1.1'
    

    版本选择建议:Jakarta Cache 2.x完全匹配Jakarta EE 9+规范,和Spring 6.1兼容性最佳。

  2. 升级Ehcache实现
    原Ehcache 3.10.0仅支持javax.cache API,必须升级到支持Jakarta Cache的版本:

    // 移除旧依赖
    // implementation 'org.ehcache:ehcache:3.10.0'
    // 添加新依赖
    implementation 'org.ehcache:ehcache:3.19.0'
    

    注意:Ehcache从3.17.0版本开始正式支持Jakarta命名空间,建议选择3.17.0及以上的稳定版。

  3. 调整配置类的包导入
    把配置类中所有javax.cache.*的导入替换为jakarta.cache.*,例如:

    // 替换前
    // import javax.cache.CacheManager;
    // import javax.cache.Caching;
    // import javax.cache.configuration.MutableConfiguration;
    
    // 替换后
    import jakarta.cache.CacheManager;
    import jakarta.cache.Caching;
    import jakarta.cache.configuration.MutableConfiguration;
    

    Spring自身的缓存注解(如@Cacheable、@CacheEvict)仍使用org.springframework.cache包,无需修改。

  4. 检查缓存配置文件(若有)
    如果项目中使用了Ehcache的XML配置文件,若存在引用javax类的配置节点,需同步替换为jakarta对应类(多数情况下Ehcache自身配置无需调整,仅涉及JCache相关的自定义配置时需要)。

补充说明

Spring 6.1文档中提及的"JSR 107支持",实际指的是Jakarta Cache规范(原JSR 107的Jakarta迁移版),并非旧的javax.cache实现。由于你未使用Spring Boot,无需依赖Spring Boot的starter自动配置,只需手动完成上述依赖替换和代码调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:23:14