久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

替代 BeanUtils.copyProperties,這款I(lǐng)DED插件,,已經(jīng)有21.3k安裝量,,月增量1000+!

 小傅哥 2025-01-08 發(fā)布于北京

作者:小傅哥
博客:https://

?

沉淀,、分享,、成長,讓自己和他人都能有所收獲,!??

?

大家好,,我是技術(shù)UP主小傅哥。

公司明確要求禁止在項目中使用 BeanUtils.copyProperties 復(fù)制對象,,不僅是因為性能問題,,更多是這種方式根本不知道有哪些對象屬性被轉(zhuǎn)換了。而手動編碼 x.set(y.get) 是最穩(wěn)定可靠處理方式,。

但如果有幾十個屬性怎么辦??,!那么你可以立即安裝這款免費的 vo2dto v2.5.5 版本插件,。截止到目前小傅哥開發(fā)的這款插件已經(jīng)有 20.1k 安裝量,!

IDEA Plugin vo2dto 是一款用于幫助使用 IntelliJ IDEA 編寫代碼的研發(fā)人員,快速生成兩個對象轉(zhuǎn)換過程中所需要大量的 x.set(y.get) 代碼塊的插件工具,。在最新 v2.5.1 版本中已支持 Lombok.Builder 模式,,讓使用可絲滑得嘞!

文末提供了此插件的源碼地址,,你可以針對使用優(yōu)化提交PR,,以后那么多人的使用,都會看見你的貢獻??,。

? 特性

  1. 2個對象的轉(zhuǎn)換操作,,通過復(fù)制 X x 對象,轉(zhuǎn)換給 Y y 對象
  2. 允許使用 lombok 對象轉(zhuǎn)換,、lombok 和普通對象轉(zhuǎn)換,,對于 serialVersionUID 屬性過濾
  3. 支持類繼承類,全量的對象轉(zhuǎn)換操作
  4. 含記憶功能的彈窗選擇映射關(guān)系,,支持全量對象,、支持匹配對象、也支持空轉(zhuǎn)換,,生成一組set但無get的對象
  5. 支持對于引入不同包下的同名類處理
  6. 支持 Lombok.Builder 模式創(chuàng)建轉(zhuǎn)換對象
  7. 支持類的內(nèi)部類對象,,進行轉(zhuǎn)換 新功能 v2.5.5

??????? 重構(gòu)

這次我要說說重構(gòu)!

其實最開始這個項目并不大,簡單的建了個抽象模板類定義執(zhí)行步驟,,方法都寫在子類里,。三下五除二就完成了對象轉(zhuǎn)換功能。

但隨著小伙伴們不斷的提出一些使用訴求后,,這里的邏輯變得的復(fù)雜了,并且由于本身 IDEA Plugin 的開發(fā),,很多時候都要一點點的處理那些對象屬性的數(shù)據(jù),,兼容各種類文件所在的包信息,,還有Lombok以及類的內(nèi)部類。所以,,每次維護起來都像是重新寫一遍一樣,。時間一長,,都不認(rèn)識它了,!

所以,,為了改變這種情況,。在 v2.5.5 版本的開發(fā)中,做了首次的工程重構(gòu),,把流水面條的代碼,,用規(guī)則樹拆分,,讓不同的節(jié)點實現(xiàn)不同的功能,。優(yōu)雅的效果,,如圖;

這是一套規(guī)則樹的模型結(jié)構(gòu),,在 vo2dto 插件開發(fā)中的實踐使用,。關(guān)于這塊的設(shè)計模式可以在這里學(xué)習(xí),;https:///md/develop/design-pattern/2024-08-25-chain-tree.html

通過節(jié)點功能對邏輯邊界的拆解,,讓每一塊功能區(qū)都可以顯而易見的找到和處理,這樣即使是過去很長時間,,在看這段代碼也能很輕松的知道每一塊在干什么,。其實代碼寫的最好的目標(biāo)就是看代碼就像看文檔,用類劃分邊界比只單純的疊加方法要清晰的多,。

  • 重構(gòu)前:https://github.com/fuzhengwei/vo2dto/tree/2.5.4
  • 重構(gòu)后:https://github.com/fuzhengwei/vo2dto/tree/2.5.5

如果感興趣這樣一個處理,,可以進入到重構(gòu)前后的代碼,看看設(shè)計模式如何處理的這部分邏輯,,怎么拆分的上下文邏輯,??梢哉f非常優(yōu)雅,!

??? 安裝

1. 在線安裝

IDEA Plugin 搜索vo2dto直接在線安裝即可

2. 手動安裝

  • 下載:https://github.com/fuzhengwei/vo2dto/releases/tag/v2.5.5
  • 安裝:
IDEA Plugin 手動安裝,,導(dǎo)入下載包

?? 使用

  • 視頻:https://www.bilibili.com/video/BV13Y411h7fv - 視頻內(nèi)有完整的使用介紹和插件設(shè)計
  • 描述:你需要復(fù)制被轉(zhuǎn)換 X x = new X() 中的 X x 部分,,無論它是方法入?yún)⑦€是實例化或者是接口回值,,接下來鼠標(biāo)定位到轉(zhuǎn)換對象 Y y 上,可以定位到類 大Y,、或者屬性 小y,,這樣我就可以知道你要做到是X的對象的屬性值,,轉(zhuǎn)換到Y(jié)對象的屬性值上。接下來幫你快速生成全部的 y.set(x.get) 代碼片段,。
IDEA Plugin vo2dto 使用演示圖

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

public class ApiTest {

    /**
     * 普通模式
     */

    public void test_vo2dto01(UserVO user) {
        UserDTO userDTO = new UserDTO();
        userDTO.setUserId(user.getUserId());
        userDTO.setUserNickName(user.getUserNickName());
        userDTO.setUserHead(user.getUserHead());
    }
    /**
     * lombok Builder 模式
     */

    public void test_vo2dto02(UserVO user) {
        UserDTO userDTO = UserDTO.builder()
                .userId(user.getUserId())
                .userNickName(user.getUserNickName())
                .userHead(user.getUserHead())
                .build();
    }
  
    /**
     * 類的內(nèi)部類轉(zhuǎn)換
     */

    public void test(UserDTO userDTO) {
         UserVO.UserVO2 userVO2

    }
    
    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    static class UserDTO {

        private String userId;
        private String userIdx;
        private String userNickName;
        private String userHead;
        private int page;
        private int rows;

    }

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    static class UserVO {

        private Long id;
        private String userId;
        private String userNickName;
        private String userHead;
        private String userPassword;
        private Date createTime;
        private Date updateTime;

    }

}
  • 注意;v2.5.5 版本已支持了 類的內(nèi)部類 模式,,如圖使用方式即可完成創(chuàng)建過程,。

?? 成長

如果你的簡歷也能有一個這樣的小組件,,讓那么多的程序員???????進行使用,,那么對你的面試簡歷來說也是非常亮眼的一筆,。

包括,;這樣的組件,還有,;OpenAI 代碼自動評審,、透視業(yè)務(wù)監(jiān)控、動態(tài)線程池,,以及大量的業(yè)務(wù)項目,;大營銷平臺、小型支付商城,、拼團交易等,你都可以跟著小傅哥一起學(xué)習(xí),。?? 踩在我的肩膀,,你能看的更遠,走的更快,,上的更高,!

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多