当前位置: 首页 > news >正文

【Java】SpringCloud中使用set方法报错空指针

前言:今天在交流群中看见了一个空指针报错,想着哪里为空点过去看看为什么赋不上值就行,没想到啪啪打脸了,今天总结一下。

以下是他的RedisTempate注入和方法

可以看到,89行报错空指针。先分析一下,

①赋值没赋上吗?不对,因为84行已将将responseBodyString的值打印在控制台了,是有值的。

②那只能是redisTemlate这个方法有问题了,set赋值赋不进去。为什么呢? 

群里大佬说:“spring 注入static 对象会是个Null对象(根据name或者type实例化失败)”。

原来如此! 往上划看图一,他是这样注入的:

@Resource

private static RedisTempalte<String,Object> redisTemplate;

因为不知道spring注入static对象会是空对象,所以没考虑到这个方面。

总结:

        我们在使用注解注入set方法时,不可以加static,因为静态变量和类变量不是对象的属性,而是一个类的属性,静态方法是属于类的;而普通方法才是属于实体的对象,即new出来的对象。

参考:文章 

补充:

除了通过注解注入,我们也可以通过构造方法注入

package com.medical.member.test;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;/*** @author: 宁兴星* Date: 2024/9/10 20:18* Description:*/
@Controller
public class TestController {private final RedisTemplate<String, Object> redisTemplate; // 移除了 static 关键字// 构造函数注入@Autowiredpublic TestController(RedisTemplate<String, Object> redisTemplate) {this.redisTemplate = redisTemplate; // 将 redisTemplate 赋值给实例变量}@GetMapping("test/method")public void test() {redisTemplate.opsForValue().set("test", "这是我的测试数据");}
}

 

http://www.lryc.cn/news/434702.html

相关文章:

  • 芯片杂谈 -- 常聊的内核包含哪些模块
  • 运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到
  • 深度解析RAG:你必须要了解的RAG优化方法
  • 深度学习驱动下的字符识别:挑战与创新
  • 使用 JAXB 将内嵌的JAVA对象转换为 xml文件
  • 若依项目后台启动报错: [网关异常处理]、503
  • 【C++ Qt day10】
  • GO HTTP库使用
  • 数据结构 - 顺序表
  • 企业如何组建安全稳定的跨国通信网络?
  • OCR在线识别网站现已上线!
  • 排名再升2位 中国平安位列BrandZ最具价值中国品牌第9位
  • k8s集群部署:环境准备
  • <C++> set、map模拟实现
  • 软考学习 数据结构 查找
  • h264 视频流中添加目标检测的位置、类型信息到SEI帧
  • 大模型api谁家更便宜
  • 代码随想录算法训练营第二十三天| 455. 分发饼干、376. 摆动序列、53. 最大子序和
  • react js 路由 Router
  • AplPost使用
  • 【Qt】Qt与Html网页进行数据交互
  • 教师节特辑:AI绘制的卡通人物,致敬最可爱的人‍
  • SprinBoot+Vue智慧农业专家远程指导系统的设计与实现
  • AI大模型行业专题报告:大模型发展迈入爆发期,开启AI新纪元
  • FLV 格式详解资料整理,关键帧格式解析写入库等等
  • 《深度学习》OpenCV 高阶 图像直方图、掩码图像 参数解析及案例实现
  • coredump-N: stack 消耗完之后,用户自定义信号处理有些问题 sigaltstack
  • 数据库有关c语言
  • 【网页播放器】播放自己喜欢的音乐
  • 【第27章】Spring Cloud之适配Sentinel