如何借助工具快速生成代碼?新手容易踩的這些坑一定要避開
?使用 gen service 自動生成代碼
注意:該功能特性從goframe v2.1版本開始提供。
基本介紹
設計背景
在業(yè)務項目實踐中,業(yè)務邏輯封裝往往是最復雜的部分,同時,業(yè)務模塊之間的依賴十分復雜、邊界模糊,無法采用Golang包管理的形式。
如何有效管理項目中的業(yè)務邏輯封裝部分呢?對于每個采用Golang開發(fā)的項目都是必定會遇到的難題。
設計目標
增加logic分類目錄,將所有業(yè)務邏輯代碼遷移到logic分類目錄下,采用包管理形式來管理業(yè)務模塊。
業(yè)務模塊之間的依賴通過接口化解耦,將原有的service分類調(diào)整為接口目錄。這樣每個業(yè)務模塊將會各自維護、更加靈活。
可以按照一定的項目規(guī)范,從logic業(yè)務邏輯代碼生成service接口定義代碼。
同時,也允許人工維護這部分service接口。
命令使用
gf gen service命令通過分析給定的logic業(yè)務邏輯模塊目錄下的代碼,自動生成service目錄接口代碼。
需要注意:
- 由于該命令是根據(jù)業(yè)務模塊生成service接口,因此只會解析二級目錄下的go代碼文件,并不會無限遞歸分析代碼文件。以logic目錄為例,該命令只會解析logic/xxx/*.go文件。因此,需要logic層代碼結構滿足一定規(guī)范。
- 不同業(yè)務模塊中定義的結構體名稱在生成的service接口名稱時可能會重復覆蓋,因此需要在設計業(yè)務模塊時保證名稱不能沖突。手動模式
手動執(zhí)行(不建議)
如果是手動執(zhí)行命令行,直接在項目根目錄下執(zhí)行 gf gen service 即可。
參數(shù)說明:
自動模式(強烈建議)
如果你是使用的GolandIDE,那么可以使用官方提供的配置文件:watchers.xml
自動模式配置教程
1. 引入官方提供的配置文件
建議在使用Goland IDE時,使用官方提供的配置文件:watchers.xml
watchers.xml下載地址:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml
2. 編寫業(yè)務邏輯代碼
3. 生成接口及服務注冊文件
如果你已經(jīng)按照步驟1做好了watchers.xml的配置,那么這一步可以忽略。因為在我們編寫代碼的時候,service便同時生成了接口定義文件。
如果沒有配置,我們每次編寫logic業(yè)務模塊后,都需要手動執(zhí)行一下 gf gen service 命令。
所以,我強烈建議你按照教程配置watchers.xml
不管用哪種方式,生成的service目錄,效果如下:
注意:下面就是我說的初學者容易踩的坑
4. 注意服務的實現(xiàn)注入部分(僅一次)
只有在生成接口文件后,才能在每個業(yè)務模塊中加上接口的具體實現(xiàn)注入。該方法每個業(yè)務模塊加一次就可以。
比如這種:
5. 在啟動文件中引用接口實現(xiàn)注冊(僅一次)
注意:gf gen service命令除了生成接口文件之外,還生成了一個接口實現(xiàn)注冊文件。
這個文件用于程序啟動時,將接口的具體實現(xiàn)執(zhí)行注冊。
該文件的引入需要在main包的最頂部引入,需要注意import的順序,放到最頂部,后面加一個空行。如果同時存在packed包的引入,那么放到packed包后面。像這樣:
6. 搞定
完成上面的5步操作,我們就搞定了初學者容易踩坑的:通過編寫logic層業(yè)務邏輯,自動生成service層代碼部分
跑通業(yè)務功能
上面介紹了 gf gen service 的使用,是本期的重點。
本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。
轉載本文請聯(lián)系「 程序員升級打怪之旅」公眾號。