Spring WebFlux 应用程序运行 tomcat 而不是 Netty
Posted
技术标签:
【中文标题】Spring WebFlux 应用程序运行 tomcat 而不是 Netty【英文标题】:Spring WebFlux application running tomcat instead of Netty 【发布时间】:2020-08-05 08:12:17 【问题描述】:我正在运行一个 Spring Boot WebFlux 应用程序,通常该应用程序运行在 Netty 嵌入式服务器之上。相反,我正在运行一个 tomcat 实例,我试图从我的 pom 中排除 tomcat,但仍然遇到同样的问题。
所以我想通过运行 Netty 而不是 Tomcat 来解决这个问题。
这是我的 pom 依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
【问题讨论】:
使用mvn dependency:tree
(或Eclipse POM 依赖查看器)找出它被拉入的位置。
【参考方案1】:
正如 Thomas 所说,springfox 不支持 webflux。
我建议使用springDoc
提供的OpenApi
实现而不是SpringFox
,它仍然提供相同的用户界面,使用swagger 3 并且还支持webflux。
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-webflux-ui</artifactId>
<version>1.2.33</version>
</dependency>
【讨论】:
【参考方案2】:Springfox 2.9.2 版不支持 webflux。
包含 webflux 支持的 Springfox 3.0.0 作为快照提供,但很快就会发布。
您可以在此处阅读有关它的更多信息。
https://github.com/springfox/springfox/issues/2699
【讨论】:
以上是关于Spring WebFlux 应用程序运行 tomcat 而不是 Netty的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot + webflux:并行运行某些步骤时上下文丢失
为啥spring webflux默认选择jetty然后失败?
将 spring-security 与 spring-webflux 一起使用时禁用 WebSession 创建
在后台使用 Netty 与 Tomcat 时 Spring webFlux 的差异