Ser*_*hyr 3 java spring startup spring-boot
当 spring 应用程序准备好时,我需要执行一些工作,类似于@Scheduled但我希望它只执行一次。我找到了一些方法来做到这一点,例如@PostConstruct在 bean 上使用,使用@EventListeneror InitializingBean,但是,所有这些方法都不符合我的需要。如果在此逻辑的执行过程中出现问题,我想忽略它,以便应用程序无论如何都会启动。但是使用这些方法应用程序会崩溃。
当然,我可以用 包围逻辑,try-catch它会起作用。但是,还有更优雅的方式吗?
小智 5
我们遇到了类似的问题microservices,为了在启动后立即运行代码,我们添加了一个Component.
ApplicationStartup implements ApplicationListener<ApplicationReadyEvent>
Run Code Online (Sandbox Code Playgroud)
在应用程序启动后立即调用服务的应用程序内,这对我们有用。
@Component
public class ApplicationStartup implements ApplicationListener<ApplicationReadyEvent> {
@Autowired
YourService yourService;
@Override
public void onApplicationEvent(final ApplicationReadyEvent event) {
System.out.println("ApplicationReadyEvent: application is up");
try {
// some code to call yourservice with property driven or constant inputs
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |