1. 程式人生 > 其它 >yue-library 2.3.0釋出,替換Db JavaBean轉換方案,效能提升約300%+

yue-library 2.3.0釋出,替換Db JavaBean轉換方案,效能提升約300%+

logo

yue-library簡介

yue-library是一個基於SpringBoot封裝的增強庫

  • 內建豐富的JDK工具
  • 自動裝配了一系列的基礎Bean與環境配置項
  • 快速構建SpringCloud專案,讓微服務變得更簡單

版本更新日誌

新特性

data-jdbc進行了重大優化,如下:

  1. 替換Db JavaBean轉換方案,效能提升約300%+
  2. 優化Convert JavaBean轉換效能
  3. 優化Convert異常提示,劃分日誌等級
  4. 過載駝峰轉換方法到Convert類

JDBC實體類對映方案已重構,廢棄了Spring的轉換器方案,這是一次底層改動。我已測試瞭如下場景成功支援:

  1. 駝峰轉換(自動對映、自動識別boolean is命名)
  2. JSONObject、JSONArray解析支援
  3. 支援實體類多set方法存在

新增如下RowMapper:

  1. BeanPropertyRowMapper,JavaBean對映兩倍有餘Spring原生的效能,支援更多型別對映,支援 JSONField 註解
  2. ColumnMapRowMapper,轉換 Map 為 fastjson 的 JSONObject
  • 【base】優化非同步執行緒池預設配置,完美解決非同步上下文遇到的所有問題(包括併發模式與Servlet提前關閉導致的子執行緒獲取不到引數異常)
  • 【base】全域性統一異常處理新增FeignException處理,提供異常訊息格式化構造
  • 【base】增強ExceptionUtils,提供多種堆疊列印方式與獲取方式,並優化異常返回錯誤內容
  • 【base】Java全域性網路代理配置,允許使用,分割(如:localhost|127.* localhost,127.*
  • 【base】新增R.errorPromptFormat()方法
  • 【base】提供最外層HTTP狀態碼503(停機維護)約定
  • 【base】新增JsonList駝峰等屬性命名策略多個過載工具方法
  • 【base】增強validator校驗框架,支援將@Valid註解新增到POJO類上
  • 【jdbc】規範排序、比較、預期、列舉,建立比較code定義命名規範類
  • 【jdbc】對BaseDO進行駝峰命名規範
  • 【jdbc】增強Db WHERE SQL對陣列型別的處理

Bug修復

  • 【base】解決@Chinese註解中文漢字校驗,value為空時的NullPointerException
  • 【web】HttpMessageConverter選用fastjson時,解析非json格式響應體錯誤 #I2ALJW

Maven倉庫實際釋出版本號

j8.2.3.0j11.2.3.0

關鍵pom.xml依賴:

依賴版本
spring-boot2.3.5.RELEASE
spring-cloudHoxton.SR9
spring-cloud-alibaba2.2.3.RELEASE
hutool5.4.4
fastjson1.2.74

工程結構

. yue-library
├── yue-library  基礎庫
│   ├── yue-library-dependencies  父pom
│   ├── yue-library-base          基礎庫提供了豐富的Java工具包,同時也自動裝配了一系列基礎Bean等
│   ├── yue-library-base-crypto   基於Hutool實現的加解密模組,提供諸如資料脫敏此類的更多特性
│   ├── yue-library-web           基礎庫WebMvc實現,用於servlet專案
│   ├── yue-library-webflux       基礎庫WebFlux實現,用於響應式程式設計專案(如:SpringCloudGateway)
│   ├── yue-library-data-jdbc     基於SpringJDBC進行二次封裝,擁有著強大效能的同時又不失簡單、靈活等
│   ├── yue-library-data-redis    基於SpringRedis進行二次封裝,更簡單靈活,提供全域性token與登入相關特性等
│   ├── yue-library-auth-service  基於SpringSecurity進行二次封裝,更簡單靈活,提供全域性token與登入等特性
│   ├── yue-library-auth-client   auth-client為auth-service客戶端模組,提供獲取當前登入使用者狀態資訊等特性
│   ├── yue-library-pay           基於pay-java-parent進行二次封裝,讓你真正做到一行程式碼實現支付聚合
│   ├── yue-library-cloud-oss
│   └── yue-library-cloud-sms
├── yue-library-samples  基礎庫示例
│   ├── yue-library-test        yue-library程式碼測試專案:單元測試、介面測試、程式碼示例
│   ├── yue-library-test-webflux    yue-library-webflux程式碼測試專案:單元測試、介面測試、程式碼示例
│   ├── yue-library-template-simple    yue-library模版:SpringBoot專案模版
│   └── yue-library-template-ssc    yue-library模版:SpringCloud專案模版,SOA共享架構(阿里巴巴中臺)
└── yue

快速開始

引入專案依賴

maven專案,在pom.xml檔案中新增如下一段程式碼,並將${version}替換為對應版本號:Maven Central with version prefix filter

<parent>
    <groupId>ai.ylyue</groupId>
    <artifactId>yue-library-dependencies</artifactId>
    <version>${version}</version>
</parent>

隨後引入所需要的模組,如WebMvc專案引入:yue-library-web

依賴說明:yue-library-base為基礎模組,一般情況下不需要單獨引入,如:web、data-jdbc、data-redis等模組皆已預設依賴。

<dependencies>
    <dependency>
        <groupId>ai.ylyue</groupId>
        <artifactId>yue-library-web</artifactId>
    </dependency>
    ...
</dependencies>

啟動專案

新建一個SpringBoot main方法啟動類:

@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(TestApplication.class, args);
    }

}

寫一個測試介面:

@RestController
@RequestMapping("/quickstart")
public class QuickstartController {

    @GetMapping("/get")
    public Result<?> get(JSONObject paramJson) {
        return ResultInfo.success(paramJson);
    }

}

訪問介面測試,如:http://localhost:8080/quickstart/get

{
    "code": 200,
    "msg": "成功",
    "flag": true,
    "count": null,
    "data": {}
}

上面的程式碼完全保持了SpringBoot的風格,但又提供了更多特性增強,如:HTTP訊息轉換器對 Alibaba Fastjson 的支援,同時不再區分 query from-data json 等傳參方式,預設也對 跨域、時間格式、異常、引數校驗 等常見坑點進行了本土化處理與特性增強。

收藏一波以表支援吧(≧▽≦)/!

本文由部落格群發一文多發等運營工具平臺 OpenWrite 釋出