Spring boot使用Redis时,报错,有redisTemplate和stringRedisTemplate两个bean?

代码在之前的工程中是好使的,新工程升了Springboot 版本,redis依赖从spring-boot-start-redis变成了spring-boot-start-data-redis,就显示有两个bean冲突,使用@Qualifier()注解指定一个后还是报一样的错误,求解。


 Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-05-13 20:11:30.651 ERROR 1869 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method setRedis in cn.andhub.authorization.manager.impl.RedisTokenManager required a single bean, but 2 were found:
    - redisTemplate: defined by method 'redisTemplate' in class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration$RedisConfiguration.class]
    - stringRedisTemplate: defined by method 'stringRedisTemplate' in class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration$RedisConfiguration.class]


Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

阅读 27.2k
5 个回答
新手上路,请多包涵

兄台,最后解决了吗?我也遇到了 一样一样的

新手上路,请多包涵

我今天也遇到了这个问题,后来发现是我把变量名写错了。
正确的:
@Autowired
private RedisTemplate redisTemplate;
错误的:
@Autowired
private RedisTemplate redistemplate;
把T写成小写的了。
后改成大写就项目启动正常了。。。

新手上路,请多包涵

我觉得应该是使用的名字冲突了,在注入的时候,改个名字,redis->redisTemplate 都可以。

新手上路,请多包涵

兄弟,我今天也是遇到这个问题,最后找到原因了。spring-boot-starter-parent最新版本应该是2.0.5,就会报这个错,更改如下:
<parent>

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>  //降低parent版本
    <relativePath/> <!-- lookup parent from repository -->
</parent>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题