我正在用spring Autowiring 对象,并且正在使用相同的 Autowiring 对象调用方法。它抛出NullPointerException。问题是我正在静态块内调用该方法。下面是我的代码-
@Autowired
static MyPropertyManagerClass myPropertyManagerClass;
private static URL SERVICE_URL = null;
static {
try {
SERVICE_URL = myPropertyManagerClass.getServiceURL();
}
catch (Exception e) {
log.error("Exception Occurred While Invoking myPropertyManagerClass.getServiceURL() : " , e);
}
}
如果我没看错,那是因为静态块先被加载。我有什么办法可以不用创建带有new关键字的对象就可以完成这项工作?
最佳答案
加载类后,将在初始化类时调用静态块。您组件的依赖项尚未初始化。这就是为什么您得到一个NullPointerException
(您的依赖项为null)的原因。
将您的代码移动到带有@PostConstruct
注释的方法。这将确保您的代码在组件的所有依赖项都初始化时运行