一款 IDEA 外掛幫你優雅轉化 DTO、VO、BO、PO、DO

小傅哥發表於2022-07-13

作者:小傅哥
部落格:https://bugstack.cn

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

一、承認你優秀很難

很多碼農,把路走窄了

捧一個,噴一個,很多碼農都不會多一點思路看問題,總是喜歡用矛和盾在顯示自己有點本事。Github 你寫文章說你不如做開原始碼有價值,你寫了開原始碼說你這沒有意義,那你問他貢獻了啥,他只貢獻了嘴。聊理論吹的叮噹的,寫程式碼搞的稀得囊的

  • 好在,你這一路上能遇到很多同好,他們能真誠的給你意見、提供思路、幫助解決,讓你們一群有技術初心的人,不斷的成長。
  • 這可能就是技術創作的土壤,如果大家都不施肥,反而還要過來用力的踩踩這塊地,那最後大家都只能一起卷死在這,誰也不要創新。加油,我希望你可以和我一起做點事情

二、寫了個什麼外掛

最近一個月多都在折騰關於 IDEA Plugin 外掛開發的案例編寫技術總結,在日常編碼開發和折騰外掛技術過程中發現一個痛點

日常編碼的過程中有太多的 vo2dto 物件轉換操作,尤其是在 DDD 架構下多了不少的防腐層,而這層之間的物件 po、vo、do、dto,總是需要被轉換,而使用 BeanUtils 多了,以後增改欄位名都不知道影響到哪。

當然也有不錯的工具 MapStruct 既可以保證效能又有不錯的效率,但它需要給每一個轉換物件維護對應的轉換類,對於介面層的轉換還是非常適合的,但那些很小的方法塊內,也是如此折騰就顯得有些麻煩了。

所以,小傅哥結合 IDEA Plugin 外掛開發的能力,通過滑鼠定位到轉換物件上,一鍵織入需要生成一堆的 x.set(y.get) 方法,並且在幾次優化中以及可以支援父類物件、lombok外掛。演示圖如下:

  • 支援:複製一個物件,游標定位另外一個物件上,滑鼠右鍵 Generate -> Vo2Dto 一鍵生成轉換程式碼
  • 支援:不復制物件,直接在轉換可以生成空的 set 物件,方便自由新增內容
  • 支援:外掛中通過註解檢測的方式,允許使用 lombok

三、釋出外掛的經歷

?原來不用英文描述,不給我過

1. 請用英語描述

  • 這是我第一次釋出外掛接收到的郵件提醒,告訴我在你的 plugin.xml 中,要用英語描述。一直沒看,以為垃圾郵件

2. 請用英文截圖

  • 告訴我,你的截圖要用英語的,這樣我才能給你通過。

3. 說我截圖沒用

  • 問我你確定需要這個截圖嗎,他覺得沒啥意義

4. 終於釋出出去

  • 改了註釋、刪了截圖,終於迎來曙光。你說,不釋出一次,你會知道遇到這些嗎!

四、把這外掛安排上

1. 安裝外掛

講到這我就興奮了!

為啥興奮,因為這一個外掛釋出,我整整等了2周,因為一次修改就要2個工作日才能稽核,所以上面我犯的錯,都是用時間磨出來。

不過現在好了,你可以直接在 IDEA 中搜尋安裝小傅哥寫的外掛了,哈哈哈,這種沒做過的事搞一次,總是讓人很興奮!

  • 看到能搜尋到 vo2dto 並順利安裝使用,我的心舒服了。沒有人能阻擋你最技術的熱愛,即使你來我這踩兩腳

2. 使用介紹

如圖所示,你只需要很簡單的步驟,既可以快速且準確的幫你生成對應的轉換程式碼,在一些場景裡使用還是非常 Good 的!操作步驟:

  • 複製物件 UserDto userDto 這個是被轉換物件,複製後才能便於生成獲取屬性的程式碼。如果你不復制,那麼就是生成空程式碼
  • 定位物件 User usxxer 把游標定位到物件或屬性上,點選 Generate -> Vo2Dto 這樣就可以把你的物件生成出來了。
  • 注意:支援 lombok、支援繼承物件,如果你在使用過程中遇到其他需求或者問題,都可以反饋給我

3. 原始碼共享

  • 原始碼:https://github.com/fuzhengwei/vo2dto
  • 說明:有同好的技術人共建才會讓一件小事不斷的優秀起來,所以我把這塊程式碼共享出來,我們可以一起做一個非常短小精緻的產品,來幫助我們自己完成一些便捷的開發處理。

五、我確定挺倔強

有一種倔強可能也是天生的,我喜歡技術、喜歡折騰、喜歡簡單幹淨的事情,並把我認準的事長久堅持下去。有時候我也知道另外一條路會更輕鬆、更有錢拿,但那並不是我的內心,只有我認識到的我才是我,否則強加給我的我,始終不會是我。

相關文章