springboot自动关闭、主动关闭
2018年06月11日

main保持:


https://blog.csdn.net/xxj_jing/article/details/69525032


Springboot关闭

https://hacpai.com/article/1488335661664


EmbeddedWebApplicationContext context = (EmbeddedWebApplicationContext)BeanTool.getAppContext();

context.getEmbeddedServletContainer().stop();


private void handleExitCode(ConfigurableApplicationContext context,
        Throwable exception) {
    int exitCode = getExitCodeFromException(context, exception);
    if (exitCode != 0) {
        if (context != null) {
            context.publishEvent(new ExitCodeEvent(context, exitCode));
        }
        SpringBootExceptionHandler handler = getSpringBootExceptionHandler();
        if (handler != null) {
            handler.registerExitCode(exitCode);
        }
    }
}

private int getExitCodeFromException(ConfigurableApplicationContext context,
        Throwable exception) {
    int exitCode = getExitCodeFromMappedException(context, exception);
    if (exitCode == 0) {
        exitCode = getExitCodeFromExitCodeGeneratorException(exception);
    }
    return exitCode;
}

private int getExitCodeFromMappedException(ConfigurableApplicationContext context,
        Throwable exception) {
    if (context == null || !context.isActive()) {
        return 0;
    }
    ExitCodeGenerators generators = new ExitCodeGenerators();
    Collection<ExitCodeExceptionMapper> beans = context
            .getBeansOfType(ExitCodeExceptionMapper.class).values();
    generators.addAll(exception, beans);
    return generators.getExitCode();
}