如何借助工具快速生成代碼?新手容易踩的這些坑一定要避開
?使用 gen service 自動(dòng)生成代碼
注意:該功能特性從goframe v2.1版本開始提供。
基本介紹
設(shè)計(jì)背景
在業(yè)務(wù)項(xiàng)目實(shí)踐中,業(yè)務(wù)邏輯封裝往往是最復(fù)雜的部分,同時(shí),業(yè)務(wù)模塊之間的依賴十分復(fù)雜、邊界模糊,無法采用Golang包管理的形式。
如何有效管理項(xiàng)目中的業(yè)務(wù)邏輯封裝部分呢?對(duì)于每個(gè)采用Golang開發(fā)的項(xiàng)目都是必定會(huì)遇到的難題。
設(shè)計(jì)目標(biāo)
增加logic分類目錄,將所有業(yè)務(wù)邏輯代碼遷移到logic分類目錄下,采用包管理形式來管理業(yè)務(wù)模塊。
業(yè)務(wù)模塊之間的依賴通過接口化解耦,將原有的service分類調(diào)整為接口目錄。這樣每個(gè)業(yè)務(wù)模塊將會(huì)各自維護(hù)、更加靈活。
可以按照一定的項(xiàng)目規(guī)范,從logic業(yè)務(wù)邏輯代碼生成service接口定義代碼。
同時(shí),也允許人工維護(hù)這部分service接口。
命令使用
gf gen service命令通過分析給定的logic業(yè)務(wù)邏輯模塊目錄下的代碼,自動(dòng)生成service目錄接口代碼。
需要注意:
- 由于該命令是根據(jù)業(yè)務(wù)模塊生成service接口,因此只會(huì)解析二級(jí)目錄下的go代碼文件,并不會(huì)無限遞歸分析代碼文件。以logic目錄為例,該命令只會(huì)解析logic/xxx/*.go文件。因此,需要logic層代碼結(jié)構(gòu)滿足一定規(guī)范。
 - 不同業(yè)務(wù)模塊中定義的結(jié)構(gòu)體名稱在生成的service接口名稱時(shí)可能會(huì)重復(fù)覆蓋,因此需要在設(shè)計(jì)業(yè)務(wù)模塊時(shí)保證名稱不能沖突。手動(dòng)模式
 
手動(dòng)執(zhí)行(不建議)
如果是手動(dòng)執(zhí)行命令行,直接在項(xiàng)目根目錄下執(zhí)行 gf gen service 即可。
參數(shù)說明:

自動(dòng)模式(強(qiáng)烈建議)
如果你是使用的GolandIDE,那么可以使用官方提供的配置文件:watchers.xml

自動(dòng)模式配置教程
1. 引入官方提供的配置文件
建議在使用Goland IDE時(shí),使用官方提供的配置文件:watchers.xml
watchers.xml下載地址:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml
2. 編寫業(yè)務(wù)邏輯代碼

3. 生成接口及服務(wù)注冊文件
如果你已經(jīng)按照步驟1做好了watchers.xml的配置,那么這一步可以忽略。因?yàn)樵谖覀兙帉懘a的時(shí)候,service便同時(shí)生成了接口定義文件。
如果沒有配置,我們每次編寫logic業(yè)務(wù)模塊后,都需要手動(dòng)執(zhí)行一下 gf gen service 命令。
所以,我強(qiáng)烈建議你按照教程配置watchers.xml
不管用哪種方式,生成的service目錄,效果如下:

注意:下面就是我說的初學(xué)者容易踩的坑
4. 注意服務(wù)的實(shí)現(xiàn)注入部分(僅一次)
只有在生成接口文件后,才能在每個(gè)業(yè)務(wù)模塊中加上接口的具體實(shí)現(xiàn)注入。該方法每個(gè)業(yè)務(wù)模塊加一次就可以。
比如這種:

5. 在啟動(dòng)文件中引用接口實(shí)現(xiàn)注冊(僅一次)
注意:gf gen service命令除了生成接口文件之外,還生成了一個(gè)接口實(shí)現(xiàn)注冊文件。
這個(gè)文件用于程序啟動(dòng)時(shí),將接口的具體實(shí)現(xiàn)執(zhí)行注冊。

該文件的引入需要在main包的最頂部引入,需要注意import的順序,放到最頂部,后面加一個(gè)空行。如果同時(shí)存在packed包的引入,那么放到packed包后面。像這樣:

6. 搞定
完成上面的5步操作,我們就搞定了初學(xué)者容易踩坑的:通過編寫logic層業(yè)務(wù)邏輯,自動(dòng)生成service層代碼部分
跑通業(yè)務(wù)功能
上面介紹了 gf gen service 的使用,是本期的重點(diǎn)。
本文轉(zhuǎn)載自微信公眾號(hào)「 程序員升級(jí)打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關(guān)注。

轉(zhuǎn)載本文請(qǐng)聯(lián)系「 程序員升級(jí)打怪之旅」公眾號(hào)。















 
 
 








 
 
 
 