升級項目版本:SpringBoot1.5.x到SpringBoot2.0.x


 1.升級版本的選擇

首先去spring的官網看一下最新的版本與版本之間的依賴

可以看到SpringBoot 2版本的穩定版有:2.0.8跟2.1.2

而SpringCloud的穩定版本為Finchley.SR2

然后我們看一看兩者的依賴關系:

 

經過對比,最終選定版本:SpringBoot2.0.8,SpringCloud Finchley.SR2

 

2.版本升級的注意事項

 

2.1.默認連接池的改變

SpringBoot2的默認連接池為HikariCP,這也是本次升級的原因,HikariCP專注於連接池,其性能是其他連接池的n多倍。

更多信息,請看:http://blog.didispace.com/Springboot-2-0-HikariCP-default-reason/

配置數據庫連接池(多數據庫配置):

@Primary
@Bean(name = "onlineDataSource")
@ConfigurationProperties(prefix = "spring.datasource.online")
public DataSource getDateSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "sxDataSource")
@ConfigurationProperties(prefix = "spring.datasource.sandbox")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
}

詳細的可以參考:https://www.cnblogs.com/hongdada/p/9360155.html

 

 

2.2.其他關聯版本的改變

這里有一個坑點

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>

這兩個依賴在

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

這個里面沒辦法拉取相關版本依賴,無奈只能手動規定版本

而spring-cloud-starter-eureka的版本只能到1.4.6,點進去其父依賴為spring-cloud-netflix也為1.4.6

但是在springcloud的Finchley.SR2中的依賴應該為2.0.2

不過在修改版本后,其他的依賴會默認覆蓋為最新版,因此也沒有多大影響

 

2.3.@EnableFeignClients注解報錯

在新版本springcloud中新增了一個組件:spring-cloud-openfeign

Spring Cloud對Feign的支持由org.springframework.cloud:spring-cloud-netflix-core移到org.springframework.cloud:spring-cloud-openfeign-core

因此刪除報錯的包,重新導入即可。

 

2.4.SpringApplicationBuilder中的web(boolean)已過時

我們刪除,看自動提示,已經修改為:WebApplicationType 枚舉類型

看一下官網給的說明:

 

更多:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/WebApplicationType.html

 具體如何選擇呢?我們呢點進方法里面看一下:

在點進去看一下

因此這里我們選擇:WebApplicationType.SERVLET

 

2.5.org.hibernate.validator.constraints下一系列注解過時問題

spring-boot-starter-web.jar 中就包含了hibernate-validator

spring boot 2版本包含hibernate-validator版本是6.0.9.Final

刪除過時包后,自動導入javax.validation.constraints.下的對應注解即可。

 

2.6.配置文件更改

2.6.1.redis配置的改變

本來是檢測使用的環境問題的,就發現redis的配置標紅了

點擊查看,搜索后發現已經修改了,多了個前綴jedis

於是將配置文件修改:

現在在點進去看一下:

到這里,max-wait與timeout報錯的原因也找到了

傳值的類型進行了修改,修改為了java.time.Duration 於是加上時間單位

原因:SpringBoot2版本使用spring-boot-starter-data-redis代替了原來的spring-boot-starter-redis

更多詳情:https://blog.csdn.net/sy793314598/article/details/80719224

 

2.6.3.server配置更改

這里替換為新的就可以了

2.6.3.management配置修改

 

1.management.context-path遷移

management.context-path 這個修改為新的路徑

 

【補一個坑】關於訪問路徑的問題

2.0之前默認是 /

於是我們加上 management.context-path:/actuator 設置路徑為  /actuator

自定義其他路徑就更改management.context-path的值

2.0默認是 /actuator (endpoints.web.base-path)

但是新增了endpoints.web.base-path(默認值為/actuator)屬性

 

將context-path的位置遷移到了server.servlet.context-path,但是也做了保留

於是當兩個屬性同時使用時,context-path的優先級高於base-path

 【補一個坑】

 

2.關於management.security 下所有配置棄用

在1.5.x版本中通過management.security.enabled=false來暴露所有端點

具體配置類:org.springframework.boot.actuate.autoconfigure.ManagementServerProperties$Security

切換SpringBoot版本為2.x 找到ManagementServerProperties,發現Security內部類已經被刪除 

 

暴露端點的新方式:

方式1:

# 啟用端點 env
management.endpoint.env.enabled=true

# 暴露端點 env 配置多個,隔開
management.endpoints.web.exposure.include=env

方式2:

方式1中的暴露方式需要一個一個去開啟需要暴露的端點,方式2直接開啟和暴露所有端點

management.endpoints.web.exposure.include=*

注意在使用Http訪問端點時,需要加上默認/actuator 前綴

原文:https://blog.csdn.net/qq_27385301/article/details/82899303

【補一個坑】在yaml文件中,* 號有特殊含義,所以得用雙引號引起來,否則沒辦法啟服務,會自動退出。

 

 

2.6.4.更多配置修改

 

可以看一下這個json文件,里面都一一列舉了的。

 

2.7.jdbcUrl is required with driverClassName

在Springboot2.0版本,配置多數據源的時候,會報錯

jdbcUrl is required with driverClassName

解決辦法如下:

1.在配置文件中使用spring.datasource.jdbc-url,而不是通常使用的spring.datasource.url。

2.在數據源配置時使用DataSourceProperties方法。

原文出處:https://my.oschina.net/chinesedragon/blog/1647846

2.8.敬請期待

3.項目遷移小技巧

在 Spring Boot 2.0 中,許多配置屬性已被重命名或被刪除,為了方便升級,Spring Boot 發布了一個新的 spring-boot-properties-migrator 模塊。

只要將其作為依賴添加到項目中,它不僅會分析應用程序的環境並在啟動時打印診斷信息,而且還會在運行時階段為項目臨時將屬性遷移至新的配置方式。

效果如圖:

此模塊雖然能臨時解決我們的問題,但是也不是長久之計,我們在控制台查看到所需要遷移的屬性后,應該手動休整

在項目屬性修改完成后應當移除此模塊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM