Spring Boot WebApplicationType
最后修改时间:2023年7月20日
Spring Boot WebApplicationType 教程介绍了 Spring Boot 应用程序中各种类型的 Web 应用程序。该示例演示了如何设置 WebApplicationType。
Spring Boot 是一个流行的应用程序框架,用于在 Java、Kotlin 或 Groovy 中创建企业应用程序。
WebApplicationType
WebApplicationType
是 Web 应用程序可能类型的枚举。 有三个可能的值
- NONE - 应用程序不应作为 Web 应用程序运行,也不应启动嵌入式 Web 服务器。
- REACTIVE - 应用程序应作为响应式 Web 应用程序运行,并应启动嵌入式响应式 Web 服务器。
- SERVLET - 应用程序应作为基于 servlet 的 Web 应用程序运行,并应启动嵌入式 servlet Web 服务器。
Spring Boot 示例
在以下应用程序中,我们定义了 Spring Boot 应用程序的 Web 应用程序类型。
build.gradle ... src ├── main │ ├── java │ │ └── com │ │ └── zetcode │ │ └── Application.java │ └── resources └── test └── java
这是 Spring Boot 应用程序的项目结构。
build.gradle
plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.zetcode' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.springframework.boot:spring-boot-starter-web' } test { useJUnitPlatform() }
在 build.gradle
文件中,我们有经典 servlet 和响应式 Web 应用程序的依赖项。
com/zetcode/Application.java
package com.zetcode; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.ServerResponse; import static org.springframework.web.reactive.function.BodyInserters.fromValue; import static org.springframework.web.reactive.function.server.RequestPredicates.GET; import static org.springframework.web.reactive.function.server.RouterFunctions.route; import static org.springframework.web.reactive.function.server.ServerResponse.ok; @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(WebApplicationType.SERVLET) .run(args); } } @RestController class MyController { @GetMapping("/") public String hello() { return "Home page"; } } @Configuration class MyRoutes { @Bean RouterFunction<ServerResponse> about() { return route(GET("/about"), request -> ok().body(fromValue("About page"))); } } @Component class MyRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("Hello there!"); } }
在 Application
中,我们定义了 Spring Boot 应用程序并设置了一个经典 Web 接口、一个响应式路由和一个命令行运行器。
new SpringApplicationBuilder(Application.class) .web(WebApplicationType.SERVLET) .run(args);
我们使用 SpringApplicationBuilder
定义 Web 应用程序类型。 对于 WebApplicationType.SERVLET
,响应式路由不可用。
$ ./gradlew bootRun
我们启动应用程序。
$ curl localhost:8080/ Home page
经典的 servlet 接口处于活动状态。
在本文中,我们使用了 Spring Boot WebApplicationType
。