如何判断哪个 Spring Web 堆栈正在运行,Spring WebFlux 还是 Spring MVC?

Spa*_*rky 3 java spring spring-mvc spring-boot spring-webflux

我们有许多通过 Gradle 构建的 Spring-Boot 应用程序,并且所有应用程序都具有略有不同的 spring 依赖项。

当尝试在两者之间复制代码时,我非常怀疑我遇到的问题是由于使用 Spring MVC 的捐赠者服务和使用 Spring WebFlux 的新服务造成的。

有没有一种“简单”的方法来检查哪个堆栈已加载?我看到文档暗示如果两者都存在,那么它将默认为 MVC,但由于缺乏深入研究所有依赖项,我不确定如何检查它。

我检查了日志,它没有说明正在使用哪个堆栈。

有没有办法查询运行时正在加载哪个堆栈(MVC 或 WebFlux)?可以在日志记录中启用某种东西,还是只能由其中之一加载的 Bean?

编辑:澄清 - 最初的回应谈论spring-boot-starter-webspring-boot-starter-webflux。就我而言,事实证明确实如此spring-boot-starter-gateway(这恰好适用于 WebFlux)。考虑到这种情况并不是立即明显的依赖关系,而且我不止一次看到人们导入两者,因为他们不知道更好,我实际上正在寻找一种方法来检查正在加载哪个堆栈运行时无需猜测依赖关系。

Mar*_*nyi 5

您可以使用ConditionalOnWebApplication注释根据应用程序类型创建 bean:

@Bean
@ConditionalOnWebApplication(type = REACTIVE)
CommandLineRunner commandLineRunner() {
    return args -> log.info("Reactive app.");
}
Run Code Online (Sandbox Code Playgroud)