spring-webflux 应用启动失败

Posted

技术标签:

【中文标题】spring-webflux 应用启动失败【英文标题】:Spring-webflux application startup failures 【发布时间】:2020-10-15 01:34:00 【问题描述】:

应用程序在启动过程中失败并出现此错误:

The bean 'requestDataValueProcessor', defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebMvcSecurityConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/security/config/annotation/web/reactive/WebFluxSecurityConfiguration.class] and overriding is disabled.

所有团队成员都有同样的问题,而且似乎即使我们检查旧的 git 标签,同样的问题仍然存在。我们检查了所有的构建文件和依赖项,在最后一段时间似乎没有任何改变。更有趣的是,Bamboo 似乎在前一天成功地运行了构建和 IT 包,但今天早上似乎同样的问题在那里重现。

不确定为什么会抱怨 WebMvcSecurityConfiguration,因为我们在项目中只使用了反应式安全性。所以此时我们没有任何 spring-mvc 依赖..

有人知道吗?谢谢

【问题讨论】:

【参考方案1】:

因此,在我们在 spring 上启用调试级别日志并强制 spring 应用仅使用如下反应配置后:

 spring:
  main:
   web-application-type: reactive

似乎 springfox 依赖项失败了:

 java.lang.NoSuchMethodError: org.springframework.util.MultiValueMap.addIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)V
at springfox.documentation.spring.web.scanners.ModelSpecificationRegistryBuilder.lambda$add$0(ModelSpecificationRegistryBuilder.java:37)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at springfox.documentation.spring.web.scanners.ModelSpecificationRegistryBuilder.add(ModelSpecificationRegistryBuilder.java:34)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at

因此错误 ^^^ 将我们指向了 sprinfox 依赖项:

compile ("io.springfox:springfox-swagger-ui:3.0.0-SNAPSHOT")
compile ("io.springfox:springfox-swagger2:3.0.0-SNAPSHOT")
compile ("io.springfox:springfox-spring-webflux:3.0.0-SNAPSHOT")

经过进一步调查,似乎其中一些包含 spring-mvc 依赖项并且干扰了 spring-webflux 依赖项,并且应用程序混淆了要注入哪些 bean。

我们已将这些依赖项降级为 2.10.0,现在似乎一切正常。我的猜测是,他们已经使用该快照版本发布了一些版本,其中包括 spring mvc,但直到现在它还没有出现。吸取的教训,永远不要使用一些外部库的快照版本,否则你可能会陷入非常糟糕的境地。

【讨论】:

【参考方案2】:

X.X.X-SNAPSHOT 依赖不是稳定的。 我们正在使用 3.0.0-SNAPSHOT 突然停止工作。 所以下面的解决方案对我们有用。

2.10.5

干杯!!

【讨论】:

以上是关于spring-webflux 应用启动失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会因为 jQuery 而出现“启动应用程序失败”错误?

在仪器中启动应用程序失败

应用程序启动 Spring Tool Suite 失败

应用程序启动后打开 Cordova 地理定位失败

子用户启动 Spring 应用程序失败

谷歌应用引擎插件安装后 Eclipse(Indigo) 启动失败