springboot2.0.3升級記錄

前言:最近公司在要求進行微服務的框架升級,搭了一個開發骨架,寫了一個使用手冊。突然發覺好久沒有寫博客了,就把手冊的東西整理下分享給大家,。微服務基礎框架2.0是基於springboot 2.0.3.RELEASE及springcloud Finchley.RELEASE版本搭建的,在從1.x至2.x升級過程中會存在一些版本差異,爲了讓大家少踩一些坑,本文將主要針對升級過程中存在的問題及注意事項進行羅列說明。

  • 注意事項
  • 服務註冊與發現

2.0之後我們暫不繼續使用Eureka作爲服務註冊與發現組件,將使用Consul進行替換,啓動類上的註解只能使用@EnableDiscoveryClient,配置信息如下圖:

  • 屬性配置變動
  • 一些servlet特有的server.* 的屬性已經被移至server.servlet:下,如下圖:

  • security節點已掛載至spring節點下,並且大部分屬性已不再建議使用,主要保留用戶驗證所需的屬性,如下圖:

  • endpoints配置更新,Actuator不再有單獨的安全自動配置(management.security.*屬性消失),如下圖:

  • 文件上傳的相關配置調整,節點爲spring.servlet.multipart

  • 客戶端獲取ip的配置,springcloud Finchley.RELEASE是spring.cloud.client.ip-address
  • Basic驗證方式

升級2.0之後,如果需要在服務間的請求調用時進行baisc驗證,需要引入spring-boot-starter-security依賴,並且需要通過重新進行HttpSecurity的配置,以達到basic驗證的效果,具體操作如下:

  • 在配置文件中配置認證信息(用戶名和密碼自定義),如下圖:

  • 新增配置類,如下圖:

  • 數據庫操作問題

Springboot2.0.2.RELEASE之後的版本默認的數據源並不是org.apache.tomcat.jdbc.pool.DataSource,而是:com.zaxxer.hikari.HikariDataSource,後者號稱性能最好,當然我們也可以根據業務需要去引入不同的數據源。在升級2.x之後,數據庫的操作主要都出現在JPA的使用上,如下:

  1. JPA的方法變動,JPA中findone==>getOne,save(Collection)==>saveAll(Collection),delete(id)==>deleteById(id)等等,在引入2.x的包後,重新編譯就會產生錯誤提示,通過查看源碼不難發現新的替代方法
  2. JPA主鍵自增需要指定策略,可以選擇在對應Entity的主鍵上加入@GeneratedValue(strategy= GenerationType.IDENTITY)註解,或者使用統一配置spring.Jpa.Hibernate.use-new-id-generator-mappings: false,否則會出現hibernate_sequence doesn't exist 的相關問題
  3. 通過源碼查看,JPA的getOne存在延遲加載,會新增一些hibernate的延遲加載屬性,例如:"hibernateLazyInitializer", "handler"等。在使用jackson進行json對象轉換時會出現轉換異常,可以通過在實體類上註解來解決該問題,如果還有發現類似情況,歡迎補充

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

  • Redis緩存機制

在2.x中,springboot已經爲我們默認了緩存配置,若需要進行自定義redis緩存相關的配置可以通過注入RedisCacheManager,詳細代碼如下圖:

  • 服務請求問題

引入security後, 原本正常的服務出現請求403服務問題;這是因爲,security中默認啓用csrf,所有http請求都被會CsrfFilter攔截。如下圖,有一個私有類DefaultRequiresCsrfMatcher實現了該接口,只有GET|HEAD|TRACE|OPTIONS這4類方法會被放行,其它Method的http請求,都要驗證_csrf的token是否正確,而通常post方式調用rest服務時,又沒有_csrf的token,所以校驗失敗

 

 

小結

同分享,共進步。以上是我在進行2.0升級工程中的一個簡單總結,希望對大家使用2.0開發會有所幫助,如果有出現文檔中所未提及的問題點,也請積極告知於我。有好的想法或建議,歡迎與我咬舌,一起爲版本升級添磚加瓦。Thks!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章