gpt4 book ai didi

一个bean的Spring静态初始化

转载 作者:行者123 更新时间:2023-12-01 15:28:33 25 4
gpt4 key购买 nike

嘿,应该如何处理 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()) 在这里没有帮助。

最佳答案

static 依赖于其他 bean 不是 Spring 方式。

然而,如果你想保持它static,你可以懒惰地初始化它——在这种情况下depends-on可以强制执行正确的初始化顺序。

编辑:延迟加载我的意思是这样的(我在这里使用带有持有者类习惯用法的延迟初始化,可以使用其他延迟初始化习惯用法):

private static class ExceptionMappingHolder {
private static final Map<String, String> exceptionMapping =
ErrorExceptionMapping.getExceptionMapping();
}

并使用 ExceptionMappingHolder.exceptionMapping 而不是 exceptionMapping

关于一个bean的Spring静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com