【汇总】解决Spring-Web与Spring-WebFlux冲突

【汇总】解决Spring-Web与Spring-WebFlux冲突

  • 问题发现
  • 问题解决
    • 问题一:The bean 'requestMappingHandlerMapping', defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class],
    • 问题二:The Java/XML config for Spring MVC and Spring WebFlux cannot both be enabled, e.g. via @EnableWebMvc and @EnableWebFlux, in the same application.
    • 问题三:请求404

问题发现

创捷了Spring-Web项目,然后在学习Spring-WebFlux的时候代码编写后请求解决报404,示例代码如下:

@Component
public class MyHandler {
    public Mono<ServerResponse> handleRequest(ServerRequest request) {
        // 处理请求逻辑
        String name = request.queryParam("name").orElse("Anonymous");
        String message = "Hello, " + name + "!";

        // 构建响应
        return ServerResponse.ok().body(BodyInserters.fromValue(message));
    }

}
@Configuration
@EnableWebFlux
public class MyWebFluxConfig {
    @Bean
    public RouterFunction<ServerResponse> route(MyHandler handler) {
        return RouterFunctions.route()
                .GET("/hello", handler::handleRequest)
                .build();
    }
}

pom依赖文件

    <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>

启动成功后,请求如图

在这里插入图片描述

然后进行一系列的问题排查

问题解决

Spring MVCSpring WebFlux 是两个不同的框架,用于构建 Web 应用程序。由于这两个框架之间的差异,建议一个项目只用一个框架。

请求404,先baidu,发现对这个问题解决方案特别少,然后看网上别人的案例发现都有@EnableWebFlux注解,加上后启动一堆错误来了。

一切的来源都是Spring MVCSpring WebFlux一起使用导致的,所以还是重新建一个项目再学习把。

问题一:The bean ‘requestMappingHandlerMapping’, defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class],

完整错误日志内容:

The bean ‘requestMappingHandlerMapping’, defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class] and overriding is disabled.

这个问题就是说requestMappingHandlerMappingBean重复了,但是全局搜索找不到这个bean,应该是默认自带的。

application.propertiesapplication.yml文件中加入配置:

spring.main.allow-bean-definition-overriding=true

当您的应用程序启动时,现有的bean定义将被新的定义所覆盖。

问题二:The Java/XML config for Spring MVC and Spring WebFlux cannot both be enabled, e.g. via @EnableWebMvc and @EnableWebFlux, in the same application.

看网上案例都有加@EnableWebFlux注解,以为是没加注解导致访问404,加上后报错:

Caused by: java.lang.IllegalStateException: The Java/XML config for Spring MVC and Spring WebFlux cannot both be enabled, e.g. via @EnableWebMvc and @EnableWebFlux, in the same application.

找到@EnableWebMvc注解,删除后,重启即可(其实不加注解也是可以请求的)。

问题三:请求404

将上面的问题都解决后,请求发现还是报404,然后就是再pom依赖文件中,删除spring-web依赖,重新编译后重启,发现依旧不行,最后发现SpringBoot可以知道应用程序的Web应用程序类型:

在配置文件(如application.propertiesapplication.yml)中,添加以下属性:

spring.main.web-application-type = reactive

它有两个可选值:

  • SERVLET:表示将应用程序配置为使用传统的Servlet API和阻塞I/O操作的Web堆栈。这是默认值,适用于大多数传统的Spring MVC应用程序。

  • REACTIVE:表示将应用程序配置为使用Reactive编程模型和非阻塞I/O操作的Web堆栈。这适用于使用Spring WebFlux构建的响应式应用程序。

最后请求接口,如图:

在这里插入图片描述
问题解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/352015.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言-算法-背包

[USACO07DEC] Charm Bracelet S&#xff08;01背包&#xff09; 题目描述 Bessie has gone to the mall’s jewelry store and spies a charm bracelet. Of course, she’d like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. E…

基于frp工具实现内网穿透,跨局域网远程SSH登录

文章目录 一.概述1.1 为什么要内网穿透&#xff1f;1.2 什么是frp&#xff1f; 二.frp安装管理流程2.1 frp下载2.2 部署2.3 通过systemd系统服务管理启动程序 三.frp配置测试&#xff08;通过SSH访问内网机器C&#xff09;3.1 服务端配置文件frps.toml修改3.2 客户端配置文件fr…

深入解析HTTPS:安全机制全方位剖析

随着互联网的深入发展&#xff0c;网络传输中的数据安全性受到了前所未有的关注。HTTPS&#xff0c;作为HTTP的安全版本&#xff0c;为数据在客户端和服务器之间的传输提供了加密和身份验证&#xff0c;从而确保了数据的机密性、完整性和身份真实性。本文将详细探讨HTTPS背后的…

护眼落地灯哪个牌子更好更专业?经典落地灯排名

不知道各位家长有没有发现&#xff0c;近几年来小小年纪就戴眼镜的孩子真的越来越多了&#xff01; 根据专家数据统计&#xff0c;在全国青少年近视率中小学生就占其40%比重&#xff0c;也代表了10个学生中就有4、5个是戴眼镜的。造成这个趋势的原因也不难理解&#xff0c;一是…

多个SSH-Key下,配置Github SSH-Key

首先&#xff0c;检查 github 的连接性&#xff0c;因为DNS污染的原因&#xff0c;很多机器ping不通github&#xff0c;就像博主的机器&#xff1a; 怎么解决DNS污染的问题&#xff0c;博主查了很多教程&#xff0c;测试出一个有效的方法&#xff0c;那就是修改hosts文件。host…

dubbo和eureka的区别

dubbo可以作为客户端&#xff0c;也可以作为服务端&#xff0c;因此他内置了很多序列化框架可供选择&#xff0c;通过配置可以进行选择。默认是hession&#xff0c;还有gson&#xff0c;fastJson&#xff0c;jdk自带的序列化。 eureka只能作为服务端&#xff0c;他序列要与客户…

01_ESP32 MicroPython开发环境搭建

一、工作原理 Python源代码->Python解释器(MicroPython)-->二进制代码(01010)-->硬件电路(ESP32)-->高低电平输出-->其他设备 二、准备工作&#xff1a; 硬件&#xff1a;ESP32开发版&#xff0c;有很多个版本可选&#xff0c;我这里用的是ESP-32开发板&…

关于一个微信自动回复的平台

这是去年整的项目&#xff0c;源码在此。那个时候刚好在学习golang&#xff0c;那么学了那不得用起来嘛&#xff1f;于是就mk代码。 基本功能如下 pc端&#xff1a;主要功能就是登陆微信。 微信小程序&#xff1a;主要是为了方便管理自动回复的状态&#xff0c;在pc端登陆完…

【CANoe使用大全】——报文发送(IG)

&#x1f64b;‍♂️【CANoe使用大全】系列&#x1f481;‍♂️点击跳转 文章目录 1.仿真报文概述2.IG模块的使用2.1.IG模块打开方式 3.添加报文4.添加报文后的配置4.1.发送方式配置4.1.1.鼠标触发4.1.2.键盘触发4.2.3.周期发送 4.3 信号值修改编辑 1.仿真报文概述 报文发送一…

每日一题——LeetCode1346.检查整数及其两倍数是否存在

方法一 循环查找 用indexOf查找每个元素的两倍是否存在在数组中&#xff0c;找到了就直接return true&#xff0c;循环结束还没找到就return false var checkIfExist function(arr) {for(let i0;i<arr.length;i){let index arr.indexOf(arr[i]*2)if(index>0 &&…

代码随想录算法训练营第十六天 |104.二叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数(待补充)

104.二叉树的最大深度 1、题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长…

可以实时监控电脑的软件有哪些?好用的四款电脑监控软件【高人气收藏分享】

在当今数字化时代&#xff0c;电脑已经成为我们工作和生活中不可或缺的工具。然而&#xff0c;有时候我们需要对电脑进行监控&#xff0c;以确保工作效率和保护个人隐私。因此&#xff0c;选择一款好的电脑监控软件非常重要。本文将介绍四款好用的电脑监控软件&#xff0c;并探…

06 栈

目录 1.栈 2.实现 3.OJ题 1. 栈 1. 栈的概念和结构 栈: 这一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&…

使用BootStrapBlazor组件搭建Bootstarp风格的Winform界面

项目地址https://gitee.com/zhang_jie_sc/my-blazor-winforms 1.安装Bootstrap.Blazor.Templates 模板 在power shell中输入dotnet new install Bootstrap.Blazor.Templates::7.6.1&#xff0c;安装7.6.1是因为版本8以后就要强制使用net8.0了&#xff0c;很多语法不一样&…

Java集合相关面试题

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于java面试题系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基…

BIGVGAN: A UNIVERSAL NEURAL VOCODER WITHLARGE-SCALE TRAINING——TTS论文阅读

笔记地址&#xff1a;https://flowus.cn/share/a16a61b3-fcd0-4e0e-be5a-22ba641c6792 【FlowUs 息流】Bigvgan 论文地址&#xff1a; BigVGAN: A Universal Neural Vocoder with Large-Scale Training Abstract 背景&#xff1a; 最近基于生成对抗网络&#xff08;GAN&am…

SpringBoot activemq收发消息、配置及原理

SpringBoot集成消息处理框架 Spring framework提供了对JMS和AMQP消息框架的无缝集成&#xff0c;为Spring项目使用消息处理框架提供了极大的便利。 与Spring framework相比&#xff0c;Spring Boot更近了一步&#xff0c;通过auto-configuration机制实现了对jms及amqp主流框架…

《WebKit技术内幕》学习之十五(3): Web前端之未来

3 Web应用和Web运行环境 3.1 Web应用 HTML5提供了强大的能力&#xff0c;而不是支持Web网页这么简单。就目前而言&#xff0c;它已经初步提供了支持Web网页向Web应用方向发展的能力。相对于本地应用&#xff08;Native Application&#xff09;&#xff0c;Web前端领域也能够…

NIO-Selector详解

NIO-Selector详解 Selector概述 Selector选择器&#xff0c;也可以称为多路复⽤器。它是Java NIO的核⼼组件之⼀&#xff0c;⽤于检查⼀个或多个Channel的状态是否处于可读、可写、可连接、可接收等。通过⼀个Selector选择器管理多个Channel&#xff0c;可以实现⼀个线程管理…

深入浅出AI落地应用分析:AI视频生成Top 5应用

接下俩会每周集中体验一些通用或者垂直的AI落地应用&#xff0c;主要以一些全球或者国外国内排行较前的产品为研究对象&#xff0c;「AI 产品榜&#xff1a; aicpb.com」以专题的方式在博客进行分享。 一、Loom 二、Runway 产品链接&#xff1a;https://app.runwayml.com/ …