gpt4 book ai didi

java - 关闭ApplicationContext仍然没有关闭spring boot应用程序

转载 作者:行者123 更新时间:2023-11-28 23:10:28 24 4
gpt4 key购买 nike

我有一个启动 Tomcat 的 spring-boot 应用程序。

我想在应用程序完成操作后将其关闭。

我正在关注这个 blog将其关闭。

它打印日志 Spring Container is destroyed!,但我仍然必须按 IntelliJ 中的停止按钮来停止它。

这是@SpringBootApplication:

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

@Autowired
MyService myService;

@Autowired
private ApplicationContext context;


public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}

@Override
public void run(String... args) throws Exception {
myService.getResult();
System.out.println("-------> 1");
((ConfigurableApplicationContext)context).close();
}
}

日志:

2019-11-06 00:51:57.018  INFO 26820 --- [           main] c.m.f.MyApplication  : Starting MyApplication on FTYUIN000171 with PID 26820 
2019-11-06 00:51:57.026 INFO 26820 --- [ main] c.m.f.MyApplication : No active profile set, falling back to default profiles: default
2019-11-06 00:52:00.423 INFO 26820 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.hateoas.config.HateoasConfiguration' of type [org.springframework.hateoas.config.HateoasConfiguration$$EnhancerBySpringCGLIB$$74fff90c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-11-06 00:52:02.282 INFO 26820 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9090 (http)
2019-11-06 00:52:02.358 INFO 26820 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-11-06 00:52:02.359 INFO 26820 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.22]
2019-11-06 00:52:02.796 INFO 26820 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-11-06 00:52:02.796 INFO 26820 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 5304 ms
2019-11-06 00:52:08.093 INFO 26820 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-11-06 00:52:09.999 INFO 26820 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path ''
2019-11-06 00:52:10.010 INFO 26820 --- [ main] c.m.f.MyApplication : Started MyApplication in 14.216 seconds (JVM running for 42.337)
-------> 1
2019-11-06 00:53:31.833 INFO 26820 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
Spring Container is destroyed!

pom.xml

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.uuid</groupId>
<artifactId>java-uuid-generator</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.1.0</version>
</dependency>
</dependencies>

最佳答案

默认情况下,Spring Boot 将 Web 应用程序部署到嵌入式 Tomcat。因此,当您启动 Spring boot 应用程序时,Tomcat 将启动,并且您的 Web 应用程序将被部署。当您关闭 Spring 上下文时,只有您的 Web 应用程序停止了,Tomcat 仍在运行(线程,如果有的话,也在运行)。

因此,您应该做的是使用 System.exit(0);

彻底终止您的应用

关于java - 关闭ApplicationContext仍然没有关闭spring boot应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com