首页 > 解决方案 > Spring WebFlux 和 MVC 配置在同一个库中

问题描述

我正在寻找一种在我的库中实现“开关”的方法,以便它能够在 2 种模式下工作 - 反应式和阻塞式。到目前为止,我有两个库在做基本相同的事情 - 一组过滤器和拦截器以及一个为最终用户提供预配置 WebClient/RestTemplate、身份验证和授权的工厂。

我发现这SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE)应该强制应用程序以反应模式或 mvc 模式运行。但是,当我添加 mvc-dependency 时,我可以在日志中看到 Tomcat 被选为运行应用程序的容器

Starting service [Tomcat]

这是我的 pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.0.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

和应用程序类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.setWebApplicationType(WebApplicationType.REACTIVE);
        app.run(args);
    }
}

我做错了什么还是该属性不应该允许在 Netty 和 Tomcat 之间切换?

标签: springspring-mvcspring-bootspring-webflux

解决方案


推荐阅读