嘿,
在 Spring 中应该如何处理静态初始化?我的意思是,我的 bean 有一个静态初始化
private static final Map<String, String> exceptionMapping = ErrorExceptionMapping.getExceptionMapping();
我需要注意 ErrorExceptionMapping 之前已加载。我试过这个:
<bean id="errorExceptionMapping" class="cz.instance.transl.util.ErrorExceptionMapping" />
<bean id="validateService" class="cz.instance.transl.services.ValidateService" depends-on="errorExceptionMapping" >
但我得到了
java.lang.NoClassDefFoundError: Could not initialize class cz.instance.transl.util.ErrorExceptionMapping
如果我省略静态初始化或从 bean 的方法中调用该方法,那当然没问题。我认为初始化回调(affterPropertiesSet())在这里没有帮助。
Having static
对其他 bean 的依赖不是 Spring 的方式。
不过,如果你想保留它static
,你可以延迟初始化它 - 在这种情况下depends-on
可以强制执行正确的初始化顺序。
EDIT:通过延迟加载,我的意思是这样的(我在这里使用 Holder 类习惯用法的延迟初始化,也可以使用其他延迟初始化习惯用法):
private static class ExceptionMappingHolder {
private static final Map<String, String> exceptionMapping =
ErrorExceptionMapping.getExceptionMapping();
}
and use ExceptionMappingHolder.exceptionMapping
代替exceptionMapping
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)