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

Spring MVC集成Redis缓存管理器报错:AbstractTransactionSupportingCacheManager无法解析

解决Spring MVC集成Redis缓存时AbstractTransactionSupportingCacheManager无法解析的问题

问题根源

你遇到的错误是Spring版本不兼容导致的:

  • 项目中spring-webmvc使用5.2.0.RELEASE版本,而引入的spring-boot-starter-data-redis是2.5.2版本,后者依赖的Spring Framework版本为5.3.x(Spring Boot 2.5.x对应Spring 5.3系列),版本不匹配导致缓存模块中的AbstractTransactionSupportingCacheManager类无法被正确加载。
  • 另外Redis配置代码存在参数类型错误:JedisConnectionFactory.setPort()需要传入int类型,你传入了字符串,运行时会触发类型转换异常。

修复步骤

1. 统一Spring依赖版本

选择以下两种方案之一:

方案A:升级Spring MVC到匹配Spring Boot 2.5.2的版本

修改pom.xml中Spring相关依赖的版本为5.3.9(Spring Boot 2.5.2对应的Spring Framework版本):

<!-- spring dependency -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.9</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.3.9</version>
</dependency>

方案B:改用纯Spring Data Redis依赖(不使用Spring Boot Starter)

移除spring-boot-starter-data-redis,添加与Spring 5.2.0匹配的Spring Data Redis和Jedis依赖:

<!-- 移除Spring Boot Redis Starter -->
<!-- <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.5.2</version>
</dependency> -->

<!-- 添加Spring Data Redis和Jedis依赖 -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.3.5.RELEASE</version> <!-- 与Spring 5.2.0匹配 -->
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.3.0</version>
</dependency>

2. 修正Redis配置代码中的错误

修改JedisConnectionFactory的端口参数为int类型,并填写实际的Redis连接信息:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {
    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName("你的Redis主机地址"); // 示例:localhost
        factory.setPort(6379); // 改为int类型,默认端口6379
        factory.setPassword("你的Redis密码"); // 无密码可留空或注释
        return factory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        return template;
    }
    
    @Bean
    public RedisCacheManager cacheManager() {
        return RedisCacheManager.builder(jedisConnectionFactory()).build();
    }
}

3. 验证修复

执行mvn clean install刷新依赖,重新启动项目,错误即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:35:54