当我在Intellij IDEA中调试我的spring启动应用程序时,我发现我的spring应用程序的主要方法将返回。当main方法返回意味着进程已经完成时,spring boot应用程序如何仍然接受请求?
答案 0 :(得分:1)
当你将web-starter
作为应用程序的依赖项时,Spring Boot知道它必须启动一个嵌入式servlet容器(web服务器),除非你explicitly tell him not to do it:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
然后当你这样做:
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
行SpringApplication.run(SampleController.class, args);
评估包含的类路径依赖关系并检测Web依赖关系。然后它知道您正在配置Web应用程序并实例化servlet容器,该容器会一直接受请求,直到您明确终止它为止。
<强>样品:强>
另见: