我们目前工作的系统是基于Spring Boot 1.5.19.RELEASE、Spring Cloud Edgware.SR3开发的,因为一个新项目开发过程的体验,所以在考虑升级到Spring Boot 2.0。查看了一下最近更新的几个版本,选择了Spring Boot 2.1.2.RELEASE、Spring Cloud Greenwich.RELEASE做了一个Demo。

  Demo是在原系统剔除了Spring Security的基础上搭建的。

一、主要升级工作

  1. spring boot版本升级为2.1.2.RELEASE
  2. eureka client和feign替换为以下依赖
1. <dependency>
    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>
  1. 相关启动类引用包路径修改

二、问题及处理过程汇总

 服务调试顺序:Eureka -> Gateway -> Services,部分问题是服务共有的,调试过程前面的服务已处理了,所以后面的服务不用处理。

Eureka

  1. 启动报错:The bean 'proxyRequestHelper', defined in class path resource [org/springframework/cloud/
  •  解决:Spring Boot版本与Spring Cloud版本不匹配报错,Spring Boot升级成2.1.2.RELEASE版本,原Spring Cloud是Edgware.SR3,版本过低。在官网查找更新博客,将Spring Cloud升级为Greenwich.RELEASE版本问题解决。

Gateway

  1. 启动报错:启动时总是能看到多个此类异常
  •  解决:此问题与IDE环境有关系:在IDEA IntelliJ环境启动,问题原因是IntelliJ的默认服务器配置,只需要删除“启用启动优化”和“启用JMX代理”复选框,报错处理。在Eclipse环境启动类型,从STS plugin Spring Boot dashboard或Run菜单中的Run Configurations转到启动配置,然后取消勾选Enable JMX复选框。
  1. 启动报错:ZuulProperties冲突
  •  解决:在网关启动类中维护了一个zuulProperties,修改为下图。

Services

  1. 配置pom.xml时eureka-client和feign依赖报错
  2. spring boot 1.5.2 spring boot 1.5.2 gateway_Cloud

  3.  

    • <repositories>
          <repository>
              <id>spring-snapshots</id>
              <name>Spring Snapshots</name>
              <url>https://repo.spring.io/snapshot</url>
              <snapshots>
                  <enabled>true</enabled>
              </snapshots>
          </repository>
          <repository>
              <id>spring-milestones</id>
              <name>Spring Milestones</name>
              <url>https://repo.spring.io/milestone</url>
              <snapshots>
                  <enabled>false</enabled>
              </snapshots>
          </repository>
      </repositories>

三、总结

  项目中使用的一些组件还未做升级处理,目前过程还算很顺利,估计接入Spring Security之后可能会比较麻烦。