先上错误使用代码:
正确调用方式:
问题修复总结:
1. StringRedisTemplate的包裹对象同样需要使用@Resource方式获取才可以正确使用
2. 同样尝试了网上的方式,使用一个RedisUtils包裹RedisService,无论是通过new的方式还是通过@Resource的方式,都不可以获得StringRedisTemplate,甚至使用@Resource的方式连RedisService对象都是null
3. 通过2的实验,盲猜一波SpringBoot生成注入对象是一个连贯动作,也就是说会先生成RedisService的对象,然后生成StringRedisTemplate,并且持有StringRedisTemplate,所以当new一个RedisService时,无法关联持有已生成的StringRedisTemplate对象,并且@Resource注入对象的实际为项目启动时(已验证),不会二次调用,所以StringRedisTemplate为null
网友评论