为什么spring boot应用程序的主要方法已经返回但是应用程序仍然可以接受请求?

时间:2018-03-15 08:09:21

标签: java spring spring-mvc spring-boot

当我在Intellij IDEA中调试我的spring启动应用程序时,我发现我的spring应用程序的主要方法将返回。当main方法返回意味着进程已经完成时,spring boot应用程序如何仍然接受请求?

1 个答案:

答案 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容器,该容器会一直接受请求,直到您明确终止它为止。

<强>样品:

另见: