51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Spring Boot 创建非 Web 应用

1、简介 {#1简介}

Spring Boot 是一个出色、流行的框架,可以快速创建适用于各种用例的 Java 应用。其中最常见用法之一是使用嵌入式 Servlet 容器来作为 Web 服务器。

Spring Boot 也可以用于许多不需要 Web 服务器的应用,如:命令行应用、作业调度、批处理或流处理应用等。

本文将带你了解在没有 Web 服务器的情况下使用 Spring Boot 的几种不同方式。

2、依赖 {#2依赖}

防止 Spring Boot 应用启动嵌入式 Web 服务器的最简单方法就是不在依赖中包含 Web Server Starter。

这意味着在 Maven POM 或 Gradle build 文件中都不会包含 spring-boot-starter-web 依赖。相反,使用更基本的 spring-boot-starter 依赖来替代它。

注意,Tomcat 依赖有可能作为传递依赖包含在应用中。在这种情况下,可能需要将 Tomcat 从包含它的依赖中排除。

3、修改 Spring Application {#3修改-spring-application}

另一种禁用 Spring Boot 内嵌 Web 服务器的方法是使用代码。

使用 SpringApplicationBuilder

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

或者,可以使用 SpringApplication

SpringApplication application = new SpringApplication(MainApplication.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);

无论哪种方式,都可以在 classpath 上保留可用的 Servlet 和容器 API。这意味着仍然可以在不启动 Web 服务器的情况下使用 Web 服务器库。例如,使用它们来编写测试或在自己的代码中使用它们的 API,这就非常有用。

4、使用 Application Properties {#4使用-application-properties}

使用代码禁用 Web 服务器不够灵活 - 无论在哪里部署应用,它都会对应用产生影响。

如果我们想在特定情况下创建 Web 服务器怎么办?

此时,可以使用 Spring application properties:

spring.main.web-application-type=none

或者 YAML:

spring:
  main:
    web-application-type: none

这种方法的好处是,可以有条件地启用 Web 服务器。利用 Spring Profile 或 Conditional,可以控制不同部署中的 Web 服务器行为。

例如,可以让 Web 服务器只在开发阶段运行,以暴露指标或其他 Spring 端点,而在生产阶段则出于安全原因将其禁用。

注意,Spring Boot 的某些早期版本使用名为 web-environmentboolean 属性来启用和禁用 Web 服务器。随着 Spring Boot 同时采用传统容器和响应式容器,该属性已被重新命名,现在使用的是枚举。

5、总结 {#5总结}

创建 Spring Boot 应用而无需 Web 服务器的原因有很多,本文介绍了实现这一目标的多种方法。每种方法都各有利弊,应该选择最符合需求的方法。


Ref:https://www.baeldung.com/spring-boot-no-web-server

赞(2)
未经允许不得转载:工具盒子 » Spring Boot 创建非 Web 应用