麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開(kāi)發(fā) > Java > 正文

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

2024-07-14 08:43:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

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

通用 Mapper 在兼容兩者過(guò)程中遇到過(guò)很多 BUG,這一次通過(guò)一個(gè)工具類(lèi)解決了這個(gè)問(wèn)題。

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

try {  RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment);  Map<String, Object> properties = resolver.getSubProperties("");  //targetClass 目標(biāo)類(lèi)型,例如 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 中,綁定更簡(jiǎn)單,如下:

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

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

由于上面的兩處代碼都在 spring-boot.jar 中,因此編譯時(shí)不能同時(shí)依賴(lài)兩個(gè)不同的版本,而且為了方便以后項(xiàng)目依賴(lài)從 1.x 升級(jí)到 2.x,因此針對(duì)上面兩處代碼全部使用反射實(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

簡(jiǎn)單用法如下:

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

至此通過(guò)environment就能得到想要的配置類(lèi)了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本看片一区二区三区高清 | 一级毛片免费观看在线 | 国产精品久久久久久久久久iiiii | 99最新地址 | 成人店女老板视频在线看 | 国产一区二区在线免费 | 免费午夜视频 | 毛片网站网址 | 欧美精品日日鲁夜夜添 | 亚洲一区二区成人 | 深夜影院一级毛片 | 日本成人午夜视频 | 黄色免费影片 | 中文字幕线观看 | 亚洲天堂一级片 | 九色com| 天天看成人免费毛片视频 | 亚洲免费网站 | 国产一级免费电影 | 九九热精品在线视频 | 成人在线免费视频播放 | 国产成人在线一区二区 | 久久国产精品久久久久久电车 | 免费在线观看午夜视频 | 久久草在线观看视频 | 蜜桃免费在线 | 激情小说激情图片激情电影 | 91短视频在线观看 | 久国产 | 一级黄色国产视频 | 精品国产一区二区三区成人影院 | 国产乱淫a∨片免费观看 | 亚洲成人精品国产 | 午夜视频在线看 | 久久思思爱 | 日本欧美在线播放 | 欧美视频首页 | 在线观看免费毛片视频 | 久久久久久久久久久影视 | 日本黄色免费片 | 久久精品1区2区 |