转载自:https://zhuanlan.zhihu.com/p/111927645
SpringBoot版本不兼容
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.
给出大家一个spring boot版本和spring cloud版本的匹配关系:
Spring Cloud Spring Boot
Hoxton 兼容Spring Boot 2.2.x, 不兼容Spring Boot 2.1.x
Greenwich 兼容Spring Boot 2.1.x, 不兼容Spring Boot 2.0.x
Finchley 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Edgware 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Dalston 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Camden 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Brixton 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Angel 兼容Spring Boot 1.2.x
dependencies与dependencyManagement:
1、使用dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项
2、dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的版本。
注意:
1、需要maven2.9以上版本。
2、将dependency分类,每一类建立单独的pom文件
3、在需要使用到这些依赖的子model中,使用dependencyManagement管理依赖,并import scope依赖
3、scope=import只能用在dependencyManagement里面,且仅用于type=pom的dependency
Spring Cloud Finchley.SR1|Greenwich.SR1
1、Eureka Server 依赖更新:
升级前:
升级后:
2、Eureka Client 依赖更新:
升级前:
升级后:
http://turbine-hostname:port/turbine.stream[?cluster=clusterName]
3、Ribbon 依赖更新
升级前:
升级后:
4、hystrix和hystrix-dashboard 依赖更新:
升级前:
升级后:
turbine:
使用 springboot2.x 和 spring cloud Finchley 及以上版本搭建:
1、必须使用 项目名/actuator/hystrix.stream 而不是 /hystrix.stream 为插入点
2、启动类注解
@EnableHystrix
@EnableCircuitBreaker
@EnableHystrixDashboard
feign:
hystrix:
enabled: true
yml:
management:
endpoints:
web:
exposure:
include: "*"
#include: hystrix.stream
endpoint:
health:
show-details: ALWAYS
5、Feign 依赖更新:(不是加netflix)
升级前:
升级后:
注解包路径改了:
org.springframework.cloud.openfeign.EnableFeignClients
6、zuul 依赖更新
升级前:
升级后:
Spring Cloud 获取服务客户端 IP 地址配置变更了
升级前:
${spring.cloud.client.ipAddress}
升级后:
${spring.cloud.client.ip-address}