1.启动gateway项目的时候报错如下:

Add an implementation, such as Hibernate Validator, to the classpath
翻译:将实现(例如Hibernate Validator)添加到类路径
image.png

意思就是让我导入上图我注释掉的那个依赖呗,可是按照他的吩咐导入之后又出现如下错误:

2.Failed to bind properties under ‘spring.cloud.gateway.routes[0]’
Failed to bind properties under ‘spring.cloud.gateway.routes[0]’ to org.springframework.cloud.gateway.route.RouteDefinition

在这里插入图片描述

翻译:在“spring.cloud.gateway”下绑定属性失败。路线org.springframework.cloud.gateway.route.RouteDefinition[0]”
image.png

他说配置文件中的标签未能绑定,那么我们就看一下这个配置文件中的内容,怎么回事儿,为啥就不能绑定了呢???

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: qq_route
          uri: lb://loonmall-coupon
#          访问:http://localhost:88/coupon/coupon/member/list 即可路由到:http://localhost:loonmall-coupon/coupon/coupon/member/list
#          访问gateway端口下的/coupon/coupon/**路径即可路由到uri的目标路径,可以理解为用户访问网关的请求由网关分发的目标服务
          predicates:
            - Path=/coupon/coupon/**

上面代码是gateway的配置文件(正确的,没有任何问题),报错的意思就是routes下面的标签属性不能够绑定,可是这是我网关的关键所在啊。咋办哪,我特意将routes下面的内容注释掉试了一下,发现,诶!真tm的好了,项目能起来了,并且没报错,可是这样我的网关路由还怎么用呐。

**

最终解决方法 最终解决方法 最终解决方法

**
把我图中的那两个依赖全部注释掉即可
简单说一下这俩注解:第一个(validation-api)是我主动引入的,他是SpingBoot2开始已经内置了的依赖,作用是坐校验的,有一些AIP经常在业务中使用。第二个(hibernate-validator)是错误提示让我被动引入的,它作用是同上,也是做校验的,但是如果真的用到了这个依赖,引入它一个往往是不够的,它还有两个相互依赖的,要一同导入,不具体说了。

3.SpringMVC和gateway冲突问题!!!
Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway at this time. Please remove spring-boot-starter-web dependency.
这个错误比较明显:Spring MVC在类路径中找到,目前与Spring Cloud Gateway不兼容。请删除spring-boot-starter-web依赖项。

因为我是将所有的公用依赖都引入到了common管理,所以gateway引入common模块之后,由于依赖传递性的原因,导致gateway也引入了spring-boot-starter-web这个依赖。
解决方法:我不想每个项目都引入web依赖,所以我直接在gateway中把common中的web依赖给去除了,方式如下:

<!--        common公用依赖-->
        <dependency>
            <groupId>com.loonmall</groupId>
            <artifactId>loonmall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
<!--            gateway和spingMVC依赖冲突,使用exclusions去除它-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

很多时候依赖冲突也会导致项目启动不了,不止是这些依赖

作者:搬砖达人呐
链接:https://www.jianshu.com/p/7155b420ff16
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐