Ris*_*ran 8 java spring static
我正在使用spring自动装配对象,并使用相同的自动装配对象调用方法。它抛出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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我没看错,那是因为静态块先被加载。我有什么办法可以不用创建带有new关键字的对象就可以完成这项工作?
static总是在弹簧注入之前对块进行处理。如@TheLostMind所建议,“在其中使用@PostConstruct并放置您的代码”。如果要避免这种情况new,可以factory-method在Xml文件中使用spring 。
加载类后,将在初始化类时调用静态块。您组件的依赖项尚未初始化。这就是为什么您得到NullPointerException(您的依赖项为null)的原因。
将您的代码移动到带有注释的方法@PostConstruct。这将确保您的代码在组件的所有依赖项都初始化时运行
| 归档时间: |
|
| 查看次数: |
4819 次 |
| 最近记录: |