springboot⾃动集成RedisTemplate的泛型问题
springboot 可⾃动注⼊,redis的模板对象,RedisTemplate。
接下来我们看下项⽬⾃动注⼊模板对象的内容
blou是什么意思idea -> crtl + N -> 检索 RedisAutoConfiguration,查看RedisTemplate 的源码
@Configurationconfident
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
public RedisAutoConfiguration(){
}
背景调查怎么做
@Bean
自考本科文凭read@ConditionalOnMissingBean(
蓝色生死恋的主题曲name ={"redisTemplate"}
)
public RedisTemplate<Object, Object>redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
RedisTemplate<Object, Object> template =new RedisTemplate();
juexiangtemplate.tConnectionFactory(redisConnectionFactory);
return template;
sigo
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
StringRedisTemplate template =new StringRedisTemplate();
template.tConnectionFactory(redisConnectionFactory);
return template;
}
}
说明:
@ConditionalOnBean// 当给定的在bean存在时,则实例化当前Bean
@ConditionalOnMissingBean// 当给定的在bean不存在时,则实例化当前Bean
@ConditionalOnClass// 当给定的类名在类路径上存在,则实例化当前Bean
@ConditionalOnMissingClass// 当给定的类名在类路径上不存在,则实例化当前Bean
@ConditionalOnMissingBean(name = {“redisTemplate”}):
当项⽬中不存在名字为 redisTemplate 的对象时,系统默认的模板对象才会⽣成,如果有⾃定义名称为redisTemplate 的对象时,系统默认提供的对象不⽣成
由上可知,redis ⾃动导⼊时,泛型只能有两种
触不到的恋人美国版1:RedisTemplate<Object, Object>
hat是什么意思
2:StringRedisTemplate extends RedisTemplate<String, String>
如果项⽬中使⽤的泛型不是这两种,可以在导⼊的时候不指明泛型,否则⾃动导⼊会报错
错误⽰例:
@Autowired
private RedisTemplate<String,Object> redisTemplate;
报错:
修正:不指明泛型即可
@Autowired
private RedisTemplate redisTemplate;