一款 IDEA 插件幫你優雅轉化 DTO、VO、BO、PO、DO

作者:小傅哥
博客: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
  • 說明:有同好的技術人共建纔會讓一件小事不斷的優秀起來,所以我把這塊代碼共享出來,我們可以一起做一個非常短小精緻的產品,來幫助我們自己完成一些便捷的開發處理。

五、我確定挺倔強

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章