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 依赖不是稳定的。
我们正在使用
干杯!!
【讨论】:
以上是关于spring-webflux 应用启动失败的主要内容,如果未能解决你的问题,请参考以下文章