邢台手机网站建设公司,家庭装修效果图,网站大幅广告,做纺织都有那些好网站前言#xff1a;今天在交流群中看见了一个空指针报错#xff0c;想着哪里为空点过去看看为什么赋不上值就行#xff0c;没想到啪啪打脸了#xff0c;今天总结一下。
以下是他的RedisTempate注入和方法 可以看到#xff0c;89行报错空指针。先分析一下#xff0c;
①赋值…前言今天在交流群中看见了一个空指针报错想着哪里为空点过去看看为什么赋不上值就行没想到啪啪打脸了今天总结一下。
以下是他的RedisTempate注入和方法 可以看到89行报错空指针。先分析一下
①赋值没赋上吗不对因为84行已将将responseBodyString的值打印在控制台了是有值的。
②那只能是redisTemlate这个方法有问题了set赋值赋不进去。为什么呢
群里大佬说“spring 注入static 对象会是个Null对象根据name或者type实例化失败”。
原来如此 往上划看图一他是这样注入的 Resource private static RedisTempalteString,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 RedisTemplateString, Object redisTemplate; // 移除了 static 关键字// 构造函数注入Autowiredpublic TestController(RedisTemplateString, Object redisTemplate) {this.redisTemplate redisTemplate; // 将 redisTemplate 赋值给实例变量}GetMapping(test/method)public void test() {redisTemplate.opsForValue().set(test, 这是我的测试数据);}
}