原文: http://zetcode.com/springboot/undertow/

Spring Boot Undertow 教程展示了如何在 Spring Boot 应用中使用 Undertow 服务器。

Spring 是流行的 Java 应用框架,而 Spring Boot 是 Spring 的演进,可以帮助轻松地创建独立的,生产级的基于 Spring 的应用。

Undertow

Undertow 是一种灵活的高性能 Web 服务器,它提供阻止和非阻止 API。 它来自 JBoss 项目。

Spring Boot Undertow 示例

默认情况下,Spring Boot 使用 Tomcat 嵌入式 Web 服务器。 以下示例显示了如何使用 Undertow。

  1. pom.xml
  2. src
  3. ├───main
  4. ├───java
  5. └───com
  6. └───zetcode
  7. Application.java
  8. ├───config
  9. AppConfig.java
  10. └───controller
  11. MyController.java
  12. └───resources
  13. application.properties
  14. └───test
  15. └───java

这是项目结构。

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  5. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <groupId>com.zetcode</groupId>
  8. <artifactId>undertowex</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10. <packaging>jar</packaging>
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <maven.compiler.source>11</maven.compiler.source>
  14. <maven.compiler.target>11</maven.compiler.target>
  15. </properties>
  16. <parent>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-parent</artifactId>
  19. <version>2.1.5.RELEASE</version>
  20. </parent>
  21. <dependencies>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-web</artifactId>
  25. <exclusions>
  26. <exclusion>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-tomcat</artifactId>
  29. </exclusion>
  30. </exclusions>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-undertow</artifactId>
  35. </dependency>
  36. </dependencies>
  37. <build>
  38. <plugins>
  39. <plugin>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-maven-plugin</artifactId>
  42. </plugin>
  43. </plugins>
  44. </build>
  45. </project>

这是 Maven 构建文件。 我们明确排除了 Tomcat 服务器依赖项,并包括了 Undertow 依赖项。

resources/application.properties

  1. spring.main.banner-mode=off
  2. logging.pattern.console=%clr(%d{yy-MM-dd E HH:mm:ss.SSS}){blue} %clr(%-5p) %clr(%logger{0}){blue} %clr(%m){faint}%n

application.properties文件中,我们有一个 Spring 启动应用的各种配置设置。 使用spring.main.banner-mode属性,我们可以关闭 Spring 横幅。 logging.pattern.console配置控制台日志记录模式。

com/zetcode/controller/MyController.java

  1. package com.zetcode.controller;
  2. import org.springframework.http.MediaType;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. @RestController
  6. public class MyController {
  7. @GetMapping(value="/", produces = MediaType.TEXT_PLAIN_VALUE)
  8. public String home() {
  9. return "Home page";
  10. }
  11. }

主页返回一条简单的文本消息。

com/zetcode/Application.java

  1. package com.zetcode;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class Application {
  6. public static void main(String[] args) {
  7. SpringApplication.run(Application.class, args);
  8. }
  9. }

Application是设置 Spring Boot 应用的入口点。

  1. $ mvn -q spring-boot:run

我们运行该应用并导航到localhost:8080

  1. ...
  2. 19-06-28 Fri 17:37:08.557 INFO nio XNIO NIO Implementation Version 3.3.8.Final
  3. 19-06-28 Fri 17:37:08.629 INFO UndertowServletWebServer Undertow started on port(s) 8080 (http) with context path ''
  4. 19-06-28 Fri 17:37:08.634 INFO Application Started Application in 3.716 seconds (JVM running for 4.352)

在控制台中,我们可以看到 Undertow 服务器正在启动。

在本教程中,我们展示了如何在 Spring Boot 应用中使用 Undertow 服务器。

列出所有 Spring Boot 教程