SpringBoot 的 Redis 注入问题及报错
(1)报错Bean named ‘redisTemplate‘ is expected to be of type ‘org.springframework.data.redis.core.StringRedis
在对StringRedisTemplate 对象自动装配变量时,使用注解为@Resource而非@Autowired,并修改其变量名就会导致此错误
报错翻译如下: BeanCreationException:没有找到对应的bean,注入依赖资源项失败
BeanNotOfRequiredTypeException:名为“redisTemplate”的Bean应为“org.springframework.data.redis.core.StringRedisTemplate”类型,但实际为“org.springframework.data.redis.core.redisTemplate”类型。
原因是@Resource是默认取字段名进行按照名称注入,详细@Resource和@Autowired的区别,可以查看此博客@Resource注解和@Authorize
解决方案
(1)将注解更换为@Autowired
(2)将变量名更改为 stringRedisTemplate
(2)由于Redis设置密码而无法连接
在默认无密码时,redis可以直接连接,但大部分情况下redis都会也都应设置有密码,需要对其配置文件进行设置,配置文件代码入下
spring:
redis:
#Redis服务器地址
host: 192.168.10.3
#端口
port: 6379
#使用几号数据库
database: 0
# 可选,如果 Redis 设置了密码则填写密码
password: *******
(3)无法连接redis数据库报错
检查redis-server是否启动,并查看pom文件中是否导入redis相关依赖,查看redis6379端口号是否被占用