SpringBoot集成Eureka踩坑集合

今天想在SpringBoot中集成Eureka,结果问题出现各种问题导致启动不起来,下面就跟我一起排一下这些坑!

踩坑一:版本号的对应

首先要看一下你的SpringBoot和SpringCloud的版本对应
可以参考这篇文章:SpringBoot与SpringCloud的版本对应详细版

java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V

如果在搭建springboot项目的时候遇到过这样的问题,那么这个问题就是版本兼容问题。
还有一种情况就是关于绑定的问题。提示binder failed,问题大概类似。

 <dependency>
       <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix-eureka-client</artifactId>
 </dependency>

这里引入注册中心jar包时是不需要指定版本号的。因为springboot与eureka整合的时候两个jar的版本很难兼容。所以我们要让系统自己去匹配。那么系统如何自动去自适应呢。

   <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

加入上边的内容系统就可以自动进行匹配了。
Finchley.RELEASE, 这个版本对应的Springboot是: 2.0.0.RELEASE~2.0.9.RELEASE

踩坑二:“Unable to start embedded Tomcat” 问题

报错:

2020-11-17 08:59:17.573 ERROR 42180 --- [           main] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'traceFilterRegistration' defined in class path resource [org/springframework/cloud/netflix/eureka/server/EurekaServerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'traceFilterRegistration' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.servlet.Filter' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=httpTraceFilter)}

在这里插入图片描述
这是什么问题呢?
这句日志表明, Tomcat已经被引入进来了, 只是“traceFilterRegistration” 这个方法缺少一个参数, 导致Tomcat无法被加载进来.
由此可以想到有可能是Springcloud版本和Springboot版本不一致所导致的, 查看pom文件一看果然如此:
在这里插入图片描述
Springcloud的版本是Finchley.RELEASE, 这个版本对应的Springboot是: 2.0.0.RELEASE~2.0.9.RELEASE.换句话说就是低版本的cloud配了高版本的boot. boot版本往下降到2.0.x即可:
所以我把springboot的版本降到2.0.9了
在这里插入图片描述
重启后终于成功了~
在这里插入图片描述

如果版本号没问题请仔细查看自己的配置文件和注解:

这里可以参考我的配置文件:

server:
  port: 7001

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,职责就是维护服务实例,并不需要取检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

注意启动器要加注解:
在这里插入图片描述

如果文章对你有帮助,不要忘了给我点个赞吼( ̄▽ ̄)~
欢迎关注我的微信公众号:松鼠技术站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值