国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

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

2024-07-14 08:43:20
字體:
來源:轉載
供稿:網友

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

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

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

也許有人直接從Environment 對象中遍歷獲取所有的配置信息,但是有一個無法完美解決的問題就是relax 值,例如first-namefirstNameFIRST_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就能得到想要的配置類了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈利县| 平遥县| 东阳市| 安多县| 巴林右旗| 景宁| 桃源县| 翼城县| 湖南省| 石渠县| 奉贤区| 荣成市| 盐边县| 隆德县| 青河县| 延长县| 瓮安县| 河东区| 班玛县| 富顺县| 三都| 金山区| 荆州市| 乡宁县| 沭阳县| 荔浦县| 布尔津县| 湖北省| 老河口市| 玉林市| 开封市| 泾川县| 镇雄县| 韶山市| 高要市| 建瓯市| 普安县| 交口县| 齐齐哈尔市| 山东| 杨浦区|