第一个错误:显示“No beans of 'RedisTemplate' type found. ”
试了两种解决方案:一:把@Autowired注解改为@Resource按照名字注入
二:仍使用@Autowired,新增自定义RedisConfig配置类,自定义Bean
如下代码:
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String,Object> template = new RedisTemplate<String,Object>();
//连接工厂
template.setConnectionFactory(factory);
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(new StringRedisSerializer());
// hash的key也采用String的序列化方式
template.setHashKeySerializer(new StringRedisSerializer());
// value序列化方式采用jackson
template.setValueSerializer(jsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
新增配置类之后我又出现了第二个问题找不到RedisConnectionFactory的问题。
第二个问题:找不到RedisConnectionFactory
解决方案:以lettuce为例,首先肯定要导入maven坐标
“spring-boot-starter-data-redis”,
“commons-pool2”
以及application.yml的配置
redis:
host: 127.0.0.1
port: 6379
database: 0
lettuce:
pool:
max-active: 8
max-idle: 8
max-wait: 100
min-idle: 0
最后在刚刚redis配置类中加入自定义bean“RedisConnectionFactory”
@Bean
public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
return lettuceConnectionFactory;
}
我这就完美解决了。
同样对于jedis,我又新导入了“jedis”maven坐标,
将配置类中 new LettuceConnectionFactory();改为jedis就可以。