springboot中自定义退出码

    xiaoxiao2024-10-18  4

    在sprintboot中,因为是大多数情况下,用application的方式去运行的,那么当程序退出的时候,其实是有个exitcode的,正常退出的时候,exitcode为0,否则为1,某些情况下,是可以自定义exitcode,可以用下面的方法:  

    @SpringBootApplication public class SampleApplication implements ExitCodeGenerator { public static void main(String[] args) { System.exit(SpringApplication .exit(SpringApplication.run(SampleApplication.class, args))); } @Override public int getExitCode() { return 25; } }

      这里只需要实现ExitCodeGenerator就可以了,重写getExitCode()方法,返回自定义码。

    而且我们可以监听退出的事件:  

    @Bean SampleEventListener sampleEventListener() { return new SampleEventListener(); } private static class SampleEventListener { @EventListener public void exitEvent(ExitCodeEvent event) { LOG.info("Application Exit code: {}", event.getExitCode()); } }

    还可以监听发生何种异常的时候,就使用什么样的退出码进行退出,比如:  

    @Bean ExitCodeExceptionMapper exitCodeToexceptionMapper() { return exception -> { if (exception.getCause() instanceof NumberFormatException) { return 34; } if (exception.getCause() instanceof CustomTypeException) { return 45; } ... return 1; }; }

     

    最新回复(0)