注入的时候,关于提示redisTemplate不存在,或者RedisConnectionFactory is required的异常问题
在service层,我注入依赖:RedisTemplate
而且用RedisTemplate
我就很奇怪了,感觉RedisTemplate
既然想不通,就决定去源码找找看。
首先,spring boot的依赖注入,全部是spring-boot-autoconfigure-2.3.4.RELEASE.jar里面,当然版本不限制,我这里是2.3.4,2以上应该都差不多。
这里包里面有springboot启动时候的默认需要依赖注入的配置项,redis的配置也在里面。
找到data/reids/RedisAutoConfiguration.class 可以看到,代码如下:
@ConditionalOnClass({RedisOperations.class}) @EnableConfigurationProperties({RedisProperties.class}) @Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class}) public class RedisAutoConfiguration { public RedisAutoConfiguration() { } @Bean @ConditionalOnMissingBean( name = {"redisTemplate"} ) public RedisTemplate
这个就是redis的自动配置类了,里面可以看到,配置了2个bean:
RedisTemplate和StringRedisTemplate。
有的人奇怪了,那RedisTemplate注入为啥没问题呢?
因为:
如图,也就是说:
StringRedisTemplate继承自RedisTemplate,当然可以用啦。
至于RedisTemplate和RedisTemplate的区别,应该不用说了。