当使用拦截器的时候报错Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway
Description:Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.Action:Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency.
再讲这个错误的时候小编给大家普及一下拦截器!
拦截器的好处:
- 权限控制:拦截器可以有效地进行权限验证,例如检查用户是否登录,以及用户是否有足够的权限进行某项操作。这有助于保护应用程序的安全性和数据的完整性。
- 日志记录:通过拦截器,可以方便地记录请求的处理过程、耗时等信息。这对于统计分析、故障排查等目的非常有用,有助于开发人员快速定位问题并进行修复。
- 数据预处理和后处理:在请求到达处理器之前,拦截器可以进行一些预处理工作,如数据解析、格式转换等。同时,处理器完成操作后,拦截器也可以进行后处理,如添加公共的响应信息、数据加工等。
- 灵活性:拦截器可以配置为拦截所有请求,或者通过指定路径模式来排除某些请求。这使得拦截器在应用中具有很高的灵活性,可以根据实际需求进行定制。
- 解耦:通过将一些通用逻辑(如权限验证、日志记录等)放在拦截器中处理,可以使控制器代码更加简洁和清晰,有助于实现代码的解耦和复用。
在我们写Spring Boot的项目的时候难免会用到 Spring Cloud Gateway与Spring MVC,Spring Cloud Gateway是基于WebFlux(响应式编程模型)构建的API网关,而Spring MVC则是基于Servlet API(同步阻塞模型)的传统Web框架。由于两者在底层实现上存在差异
正文开始
他们同时都用的时候之间会出现报错的这个情况报错如下:
提取出来的报错代码
Description:
Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.
Action:
Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency.
说明在使用他们一起的时候出现了问题
那么小编也是琢磨和找了很久终于知道了这个的解决方案如下:
第1种方法是删除pom.xml里面的依赖
org.springframework.boot
spring-boot-starter-web
第2种是以加配置的方式
你的项目配置是 properties 里面加
# application.properties
spring.main.web-application-type=reactive
你的项目配置是 yaml 里面加
# application.yml
spring:
main:
web-application-type: reactive
请注意,将应用配置为响应式Web应用意味着你的整个应用将基于WebFlux进行构建,这意味着你可能需要重写或替换现有的基于Spring MVC的控制器和组件。
通常,如果你正在使用Spring Cloud Gateway,那么移除Spring MVC依赖是更直接和推荐的做法,因为Spring Cloud Gateway本身已经是一个完整的API网关解决方案,不需要与Spring MVC混合使用。
加完之后在运行一下就好了
小伙伴们学费了嘛,学费了的话请求三连哈哈哈!!!路途遥远我陪你啊!ovo
更多推荐
所有评论(0)