情景是这样的
我有一个工具类,依赖于一个 @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 初始化阶段之间的。
谢谢