最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

BeanUtil和mapStruct和Orika

2023-06-29 21:18 作者:紅紅的2  | 我要投稿


最近接手了一個(gè)其他組的項(xiàng)目,發(fā)現(xiàn)在項(xiàng)目中對(duì)象映射上竟然采用了三種不同方法:BeanUtil, Orika和MapStruct。BeanUtil是Spring框架自帶的映射工具, Orika和Mapstruct是開源的對(duì)象映射的兩種方法。下面的代碼分別使用不同的方式進(jìn)行對(duì)象映射

//BeanUtilBeanUtils.copyProperties(a, b)//Orikaprivate static final MapperFacade FACADE = new DefaultMapperFactory.Builder().build().getMapperFacade(); b = FACADE.map(a, B.class);//MapStructpublic interface Converter { ? ?Converter INSTANCE = Mappers.getMapper(Converter.class); ? ?B b = convertToEntity(A a);

對(duì)比

如果只是對(duì)比代碼量,BeanUils的方式是最簡(jiǎn)單的,代碼量最少,但是在實(shí)際的工作場(chǎng)景中會(huì)發(fā)現(xiàn)使用BeanUils是最坑的,比如傳了Null的對(duì)象進(jìn)去,就會(huì)報(bào)NPE的錯(cuò)誤,需要在映射前進(jìn)行判空的處理。下面是對(duì)三種方式的比較。

BeanUtils

優(yōu)點(diǎn)

  1. 易于使用和配置。

  2. 不需要進(jìn)行手動(dòng)配置。

  3. 支持復(fù)制對(duì)象的屬性。

缺點(diǎn)

  1. 映射速度較慢,因?yàn)樗褂梅瓷鋪慝@取和設(shè)置屬性。

  2. 在處理復(fù)雜映射場(chǎng)景時(shí)可能會(huì)出現(xiàn)問題。

  3. 不支持自定義轉(zhuǎn)換器和過濾器。

Orika

優(yōu)點(diǎn)

  1. 映射速度非??欤?yàn)樗褂米止?jié)碼生成來創(chuàng)建映射器。

  2. 支持復(fù)雜的映射場(chǎng)景,例如嵌套對(duì)象和集合映射。

  3. 可以通過自定義轉(zhuǎn)換器和過濾器來進(jìn)行高度個(gè)性化的映射。

  4. 易于使用和配置。

缺點(diǎn)

  1. Orika的字節(jié)碼生成可能會(huì)導(dǎo)致應(yīng)用程序的啟動(dòng)時(shí)間變慢。

  2. 需要在運(yùn)行時(shí)生成字節(jié)碼,這可能會(huì)影響應(yīng)用程序的性能。

  3. 需要對(duì)映射器進(jìn)行手動(dòng)配置。

MapStruct

優(yōu)點(diǎn)

  1. 映射速度非???,因?yàn)樗褂镁幾g時(shí)生成的代碼。

  2. 支持復(fù)雜的映射場(chǎng)景,例如嵌套對(duì)象和集合映射。

  3. 可以通過自定義轉(zhuǎn)換器和過濾器來進(jìn)行高度個(gè)性化的映射。

  4. 易于使用和配置。

缺點(diǎn)

  1. MapStruct的編譯時(shí)代碼生成可能會(huì)導(dǎo)致編譯時(shí)間變長(zhǎng)。

  2. 需要對(duì)映射器進(jìn)行手動(dòng)配置。

當(dāng)選擇這些工具中的一個(gè)時(shí),應(yīng)該考慮應(yīng)用程序的特定需求。如果應(yīng)用程序需要高性能和復(fù)雜的映射場(chǎng)景,則可以選擇Orika或MapStruct。如果應(yīng)用程序需要簡(jiǎn)單的屬性復(fù)制,則可以選擇BeanUtils。在Orika和MapStruct之間進(jìn)行選擇時(shí),應(yīng)該考慮是否更關(guān)注應(yīng)用程序的啟動(dòng)時(shí)間還是編譯時(shí)間。

代碼可讀性

從代碼可讀性和重構(gòu)的角度來看,個(gè)人認(rèn)為MapStruct是最佳選擇。

MapStruct的代碼生成是在編譯時(shí)完成的,這意味著它生成的代碼可以與手動(dòng)編寫的代碼一樣清晰和易于理解。此外,MapStruct生成的代碼易于重構(gòu)和維護(hù),因?yàn)樗鼈兣c手動(dòng)編寫的代碼沒有區(qū)別。

相比之下,Orika和BeanUtils生成的代碼通常比手寫的代碼難以閱讀和理解,這可能會(huì)導(dǎo)致在重構(gòu)和維護(hù)代碼時(shí)出現(xiàn)問題。Orika的字節(jié)碼生成也可能會(huì)使代碼變得更加復(fù)雜和難以調(diào)試。

面試大全超級(jí)詳細(xì)!!

java面試大全:

搜索公眾號(hào)回復(fù)eee003獲取?


BeanUtil和mapStruct和Orika的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
吴忠市| 蓬安县| 伊吾县| 航空| 西乌珠穆沁旗| 霍林郭勒市| 阳春市| 周宁县| 石嘴山市| 宁阳县| 舟山市| 和静县| 伊川县| 杭州市| 桦南县| 土默特右旗| 应城市| 新建县| 理塘县| 广丰县| 漠河县| 和政县| 临湘市| 岢岚县| 重庆市| 齐齐哈尔市| 尚义县| 云阳县| 桑日县| 闽侯县| 福海县| 万年县| 延长县| 凌源市| 通山县| 佛教| 金寨县| 昌都县| 霞浦县| 乌兰浩特市| 贺州市|