这是一段获取Redis的代码,注释的代码因为修饰的是static所以每次会首先自动保存在方法栈中,但此时因为redis还未读取配置初始化,所以会报空指针异常。
使用注入的方式获取redis是可以的因为获取redis在后
public static JedisClusterBSJ jedisClusterBSJ;
@Autowired
public void setJedisClusterBSJ(JedisClusterBSJ aa) {
jedisClusterBSJ = aa;
}
// public static JedisClusterBSJ jedisClusterBSJ =
// SpringUtil.getBean("jedisClusterBSJ");
private static OpenSearchProperties openSearchProperties;
@Resource(name = "openSearchProperties")
public void setOpenSearchProperties(OpenSearchProperties openSearchProperties) {
OpenSearchUtil.openSearchProperties = openSearchProperties;
}
执行顺序:静态变量>静态初始化块度>变量>初始化块>构造器
本文探讨了在静态变量初始化前调用未初始化的Redis导致的空指针异常问题。通过对比注释代码与注入方式获取Redis的区别,阐述了正确的初始化顺序及避免此类异常的方法。
862

被折叠的 条评论
为什么被折叠?



