情景是这样的
我有一个工具类,依赖于一个 @Configuration 类的 Bean 去算出一个字段的值。
public class KeyHolder implements ApplicationListener<?> {
private volatile static String key = null;
public static String getKey() {
return Objects.requireNonNull(key);
}
@Override
public void onApplicationEvent(? event) {
final Options options = event.getApplicationContext().getBean(Options.class);
key = calculateBy(options);
}
然后这个 getKey()
方法会被 @Controller/@Service 这类 Bean 在初始化时调用,因此在所有 Bean 的初始化都完成后才发布的事件如 ApplicationStartedEvent,ApplicationReadyEvent 应该都不行。不知道有没有事件是正好在两类 Bean 初始化阶段之间的。
谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.