項目中經常需要用到外部服務或者對外提供服務的介面,這個時候需要對返回參數進行轉義避免外部對象對內部系統的影響。比如介面 DataTO getMyDate()傳回值是DataTo 我需要轉換成我們內部的對象DataDO,這樣就算業務方提供的DataTO發生了變化,我們內部系統收到的影響可以最小化。這樣就需要寫一個DataTO到DataDO的轉換方法,通常是屬性的拷貝,類似:
public static DataDO toDataDO(DataTO dataTO) { if (dataTO == null) { return null; } DataDO DataDO = new DataDO(); DataDO.setPlname(dataTO.getPlname()); DataDO.setPladdress(dataTO.getPladdress()); DataDO.setTel(dataTO.getTel()); DataDO.setUrl(dataTO.getUrl()); DataDO.setPosx(dataTO.getPosx()); DataDO.setPosy(dataTO.getPosy()); DataDO.setStoreType(dataTO.getStoreType()); return DataDO; }
你會發現如果屬性很多,就需要人肉寫很多這種機械的代碼,有時候可能漏掉一個,就會很難發現問題。這個時候一般會有人寫個main函數,java的反射可以很好的解決這個問題。因為想嘗試下IDEA的plugin開發,就想開發一個可以自動產生O2O方法體的外掛程式。
網上關於IDEA plugin的文檔不算多,中文的也比較老,不過基本也湊合了。參考資料:
http://www.intellij.org.cn/downloads/intellij_plugin_basic.pdf
https://docs.google.com/document/pub?id=13WdYcWgXErISfdpToxGu1mFUC1jEZpjMYCCAzi2CEPQ
http://confluence.jetbrains.com/display/IDEADEV/PluginDevelopment
上面都是中文的,不過版本有點老,英文可以的同學可以看下官方的文檔
http://confluence.jetbrains.com/display/IDEADEV/PluginDevelopment
不過後面用到的很多api還是要通過英文文檔來看的。實際開發中還是有很多坑的,多借鑒其他外掛程式的源碼,多摸索。
目前外掛程式已經上線
源碼在:https://github.com/ykdsg/GenerateO2O