亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年12月25日 10:16:12   作者:isea533  
今天小編就為大家分享一篇關(guān)于兼容Spring Boot 1.x和2.x配置類參數(shù)綁定的工具類SpringBootBindUtil,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

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

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

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

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

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

try {
  RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment);
  Map<String, Object> properties = resolver.getSubProperties("");
  //targetClass 目標(biāo)類型,例如 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();

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

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

源碼地址: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就能得到想要的配置類了。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Java實(shí)現(xiàn)簡單的學(xué)生教師管理系統(tǒng)

    Java實(shí)現(xiàn)簡單的學(xué)生教師管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的學(xué)生教師管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • gataway斷言工作流程源碼剖析

    gataway斷言工作流程源碼剖析

    這篇文章主要為大家介紹了gataway斷言工作流程源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Java解析XML的四種方式

    Java解析XML的四種方式

    本文詳細(xì)講解了Java解析XML的四種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • springcloud 熔斷器Hystrix的具體使用

    springcloud 熔斷器Hystrix的具體使用

    本篇文章主要介紹了springcloud 熔斷器Hystrix的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 利用Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制

    利用Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 自定義feignClient的常見坑及解決

    自定義feignClient的常見坑及解決

    這篇文章主要介紹了自定義feignClient的常見坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用java NIO及高速緩沖區(qū)寫入文件過程解析

    使用java NIO及高速緩沖區(qū)寫入文件過程解析

    這篇文章主要介紹了使用java NIO及高速緩沖區(qū)寫入文件過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Spring?Boot中優(yōu)雅地處理參數(shù)傳遞的技巧分享

    Spring?Boot中優(yōu)雅地處理參數(shù)傳遞的技巧分享

    最近一直在學(xué)習(xí)Spring Boot,今天將其中的從前臺過來的參數(shù)傳遞總結(jié)一下,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中優(yōu)雅地處理參數(shù)傳遞的技巧,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Springbootadmin與security沖突問題及解決

    Springbootadmin與security沖突問題及解決

    這篇文章主要介紹了Springbootadmin與security沖突問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java(基于Struts2) 分頁實(shí)現(xiàn)代碼

    Java(基于Struts2) 分頁實(shí)現(xiàn)代碼

    這篇文章介紹了Java(基于Struts2) 分頁實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10

最新評論