91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

兼容Spring Boot 1.x和2.x配置類參數綁定的工具類SpringBootBindUtil

發布時間:2020-09-04 10:49:19 來源:腳本之家 閱讀:156 作者:isea533 欄目:編程語言

為了讓我提供的通用 Mapper 的 boot-starter 同時兼容 Spring Boot 1.x 和 2.x,增加了這么一個工具類。

在 Spring Boot 中,能夠直接注入 XXProperties 類的地方不需要使用這個工具類。

但是在Spring 的接口和啟動流程設計中,有些情況下只能通過EnvironmentAware接口得到Environment對象,此時你想得到 XXProperties 類沒有更好的辦法。

也許有人直接從Environment 對象中遍歷獲取所有的配置信息,但是有一個無法完美解決的問題就是relax 值,例如first-namefirstName, FIRST_NAME都可以代表同一個參數,在自己代碼中很難處理這種情況。

通用 Mapper 在兼容兩者過程中遇到過很多 BUG,這一次通過一個工具類解決了這個問題。

在 Spring Boot 1.x 中,可以通過下面代碼綁定參數到對象:

try {
  RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment);
  Map<String, Object> properties = resolver.getSubProperties("");
  //targetClass 目標類型,例如 MapperProperties
  T target = targetClass.newInstance();
  RelaxedDataBinder binder = new RelaxedDataBinder(target, prefix);
  binder.bind(new MutablePropertyValues(properties));
  return target;
} catch (Exception e) {
  throw new RuntimeException(e);
}

Spring Boot 2.x 中,綁定更簡單,如下:

Binder binder = Binder.get(environment);
return binder.bind(prefix, targetClass).get();

上面這兩段代碼也是最近才找到,要不然這個功能會出現的更早。

由于上面的兩處代碼都在 spring-boot.jar 中,因此編譯時不能同時依賴兩個不同的版本,而且為了方便以后項目依賴從 1.x 升級到 2.x,因此針對上面兩處代碼全部使用反射實現。

源碼地址:https://github.com/abel533/mapper-boot-starter/blob/master/mapper-spring-boot-autoconfigure/src/main/java/tk/mybatis/spring/mapper/SpringBootBindUtil.java

簡單用法如下:

MapperProperties mapperProperties = SpringBootBindUtil.bind(
    environment, 
    MapperProperties.class, 
    MapperProperties.PREFIX);

至此通過environment就能得到想要的配置類了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旺苍县| 织金县| 本溪市| 黔江区| 台东市| 宜兰市| 渝中区| 三穗县| 呼和浩特市| 涞水县| 江口县| 临颍县| 繁昌县| 且末县| 武功县| 株洲市| 卓尼县| 河南省| 钟山县| 铜川市| 土默特右旗| 万山特区| 叶城县| 安达市| 东明县| 华容县| 固原市| 西盟| 玛曲县| 阿克苏市| 曲麻莱县| 石河子市| 山东| 墨玉县| 犍为县| 岑溪市| 保靖县| 通化市| 双柏县| 盐城市| 达尔|