当前位置: 首页 > 知识库问答 >
问题:

以编程方式关闭spring boot应用程序

秦天宇
2023-03-14

如何在不终止VM的情况下以编程方式关闭一个spring boot应用程序

在其他作品中,…的反义词是什么

new SpringApplication(Main.class).run(args);

共有2个答案

方寒
2023-03-14

最简单的方法是在需要启动关机的地方注入以下对象

ShutdownManager.java

import org.springframework.context.ApplicationContext;
import org.springframework.boot.SpringApplication;

@Component
class ShutdownManager {

    @Autowired
    private ApplicationContext appContext;

    /*
     * Invoke with `0` to indicate no error or different code to indicate
     * abnormal exit. es: shutdownManager.initiateShutdown(0);
     **/
    public void initiateShutdown(int returnCode){
        SpringApplication.exit(appContext, () -> returnCode);
    }
}
南宫喜
2023-03-14

关闭SpringApplication基本上意味着关闭底层的ApplicationContextSpringApplication#run(String...)方法将ApplicationContext作为ConfigurableApplicationContext。然后您可以自己close()

例如,

@SpringBootApplication
public class Example {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Example.class, args);
        // ...determine it's time to shut down...
        ctx.close();
    }
}

或者,您可以使用staticSpringApplication.Exit(ApplicationContext,ExitCodeGenerator...)帮助器方法来完成此操作。例如,

@SpringBootApplication
public class Example {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Example.class, args);
        // ...determine it's time to stop...
        int exitCode = SpringApplication.exit(ctx, new ExitCodeGenerator() {
            @Override
            public int getExitCode() {
                // no errors
                return 0;
            }
        });

        // or shortened to
        // int exitCode = SpringApplication.exit(ctx, () -> 0);

        System.exit(exitCode);
    }
}
 类似资料:
  • 问题内容: 如何在 不终止VM的情况下以* 编程方式关闭 Spring Boot 应用程序? * 在其他作品中, 问题答案: 关闭a 基本上意味着关闭基础。该方法为您提供了一个。您可以自己动手做。 例如, 或者,您可以使用 帮助程序方法来帮助您。例如,

  • 我正在使用netty 4.0。24.4决赛。 我需要以编程方式启动/停止网络服务器。 在启动服务器时,线程在 请提供一些如何正确操作的提示。下面是由主类调用的EchoServer。谢谢 更新:我用以下方式更改了EchoServer类。其想法是在新线程中启动服务器,并保留到EventLoopGroup的链接。这条路对吗?

  • 问题内容: 我想知道是否已经有一个库可以以编程方式编写Java类或方法? 我正在寻找能够将新的源代码写入现有文件或扩展已经存在的文件的库。 问题答案: 查看Eclipse JDT。 Eclipse Java开发工具(JDT)提供用于访问和操作Java源代码的API。它允许访问工作空间中的现有项目,创建新项目以及修改和读取现有项目。 更具体地说,您可以使用Java Model API创建新的Java

  • 如何以编程方式关闭或停止Spring应用程序? 我们目前使用的是ConfigurableApplicationContext#close(),是的,它确实关闭了应用程序,但没有关闭或停止应用程序。 感谢任何帮助。

  • 问题内容: JFrame与用户按下X关闭按钮或按在Windows上)相同,获得关闭的正确方法是什么? 我通过以下方式设置了我想要的默认关闭操作: 它完全符合我想要的上述控件的功能。这个问题不是关于这个的。 我真正想做的是使GUI的行为与按下X关闭按钮的行为相同。 假设我要扩展,然后通过来添加我的适配器的实例作为侦听器。我想看到的调用相同的序列通过,以及作为将与出现X关闭按钮。可以这么说,撕开窗户与

  • 我的主类扩展了JPanel,我在这个面板上创建了一个表和一个按钮。现在我想在用户按下它时关闭这个面板。在互联网上关闭面板的例子是关于JFrame.JPanel有解决方案吗?