当我只想使用 RestTemplate 时,如何防止 tomcat/jetty 在 Spring 启动时自动启动

How to prevent auto start of tomcat/jetty in Spring Boot when I only want to use RestTemplate

我想通过将工件包含在 SpringBoot 应用程序中来使用 RestTemplate/TestRestTemplate

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>

但这会自动启动 Tomcat 或 Jetty。有没有办法将其关闭,或者不包括上述工件。 TestRestTemplate 在引导工件中,但不在基础 RestTemplate 中。

Spring 如果 Web 容器不存在,Boot 将不会启动它。 spring-web 不提供任何嵌入式容器。您可能想分析项目的依赖项(尝试 mvn dependency:tree)。

如果您想确保 Web 服务器未在您的 spring 启动应用程序中启动,您可以设置以下配置键

spring.main.web-application-type=none

或者您可以使用 SpringApplicationBuilder

new SpringApplicationBuilder(YourApp.class)
        .web(WebApplicationType.NONE).run(args);

从 Spring Boot 2.0.0 开始,此 属性 已弃用,以下是新方法:

spring.main.web-application-type=none

此更改是因为 Spring 启动对 reactive server.

的支持

您可以按照https://spring.io/guides/gs/async-method/关闭应用。虽然这仍然是 stars Tomcat,但会在最后停止应用程序而不保持胎面 运行。

SpringApplication.run(MyApp.class, args).close();