Spring 在启动时会忽略失败

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)