@PostConstruct
public void performStateChecks() {
throw new RuntimeException("test");
}
如果我开始一个 spring
上面代码的应用程序,它将阻止应用程序启动。我正在寻找的是在启动后直接执行一个方法,但异步。意思是,它不应该延迟启动,也不应该阻止应用程序即使在失败时也能运行。
如何使初始化异步?
最佳答案
我能看到的最简单的方法是使用 EventListeners 和异步任务执行器。
添加此代码片段将完成以下工作:
@Component
public class AsyncStartupRunner {
@Bean(name = "applicationEventMulticaster")
public ApplicationEventMulticaster simpleApplicationEventMulticaster() {
SimpleApplicationEventMulticaster eventMulticaster =
new SimpleApplicationEventMulticaster();
eventMulticaster.setTaskExecutor(new SimpleAsyncTaskExecutor());
return eventMulticaster;
}
@EventListener(ApplicationReadyEvent.class)
public void executeAfterStartup() {
throw new RuntimeException("Oops");
}
}
关于java - 如何在 Spring 中运行 @PostConstruct 非阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66670891/