使用redisTemplate.opsForValue().get()获取值返回null,通常由依赖注入不当引起。若容器中多个RedisTemplateBean,用@Resource注入时易注入错误实例,导致操作无效。改用@Autowired或@Resource指定name属性可解决。
使用redisTemplate.opsForValue().get()方法时,返回结果为null。该问题较为常见,但许多开发者首先会检查Redis中是否已存储数据。实际上,问题根源可能不在于数据本身,而在于注解的使用方式。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
根本原因在于依赖注入方式不当。以下两个注解容易混淆:
@Resource:Java自带的注解,属性较多。当类型无法唯一匹配时,可通过name属性指定具体的Bean名称。@Autowired:Spring框架的注解,功能单一。若类型匹配存在歧义,需借助@Qualifier注解手动指定。在实际开发中,许多团队习惯使用@Autowired,并推荐采用构造函数注入方式,以保证依赖不可变性并便于单元测试。
回到问题本身:若使用@Resource注入RedisTemplate,而容器中存在多个同类型Bean(例如多个Redis连接配置),则可能导致注入的并非目标实例,进而调用get()时返回null。
将@Resource注解替换为@Autowired,通常能直接解决问题。
若仍需使用@Resource,可添加name属性明确指定Bean名称。但相比之下,@Autowired更简洁且符合Spring的惯用风格。
此类问题虽然不复杂,但容易被忽略。根据经验,排查Redis取值异常时,建议优先检查注入方式,这往往能显著缩短调试时间。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述