當前位置:編程學習大全網 - 編程語言 - Golang反射框架Fx

Golang反射框架Fx

Fx是golang版本的依賴註入框架,它使得golang通過可重用和可組合的模塊化來構建golang應用程序變得非常容易。可以直接將以下內容添加到項目中體驗Fx效果。

Fx通過使用依賴註入代替了手動連接不同函數調用的復雜性,與其他依賴註入方法不同。Fx可以像普通的golang函數壹樣使用,無需使用struct標記或嵌入特定類型。這使得Fx可以在許多go包中很好地使用。

接下來,我將提供壹些Fx的簡單演示,並解釋壹些定義。

1,壹般步驟

壹般使用步驟如下。壹些完整的演示將在下面給出。

2、簡單演示

將io.reader與具體的實現類相關聯。

輸出:

3.使用struct參數

以前的使用模式壹旦註入類型太多,可以用struct參數法解決。

輸出

如果通過provide提供的構造函數生成相同的類型有什麽問題?換句話說,如果同壹個類型有多個值呢?

下面兩個辦法就是解決這個問題。

4.使用struct參數+Name標記。

當Fx不使用名稱或組標簽時,不允許有多個相同類型的構造函數。壹旦它們存在,就會引發恐慌。

輸出

同樣的類型可以通過上面的Name標簽註入到Fx容器中。

5.使用結構參數+組標記。

使用group標簽也可以完成上述功能。

輸出

基本上也簡單說明了上面例子中Fx的簡單應用。

1,帶註釋的(位於annotated.go文件中)主要用於以帶註釋的方式提供提供的註入類型。

源代碼中的兩個字段Name和Group與上面提到的Name標簽和Group標簽相同,只能使用其中壹個。

2.App(位於app.go文件中)提供了註入對象的特定容器、LiftCycle、啟動和停止容器、註入類型變量和實現類、映射兩者等操作。

至於Provide和Populate的源代碼,相對簡單易懂,這裏就不描述了。

特定源代碼

3.提取(位於extract.go文件中)

主要用於在應用啟動的初始化過程中,通過依賴註入的方式將容器中的變量值填充給定的struct,其中target必須是指向struct的指針,並且只能填充可導出的字段(golang只能通過反射修改可導出的和可尋址的字段),Extract將被Populate替換。特定源代碼

4.其他人

比如Populate是用來代替Extract的,而LiftCycle和inout.go涉及的內容很多,後面會單獨提供專屬的文件描述。

Fx中提供的構造函數都是懶調用,壹些必要的初始化工作可以通過application: fx中的調用來完成。Invoke(函數);還可以根據需要自定義實現LiftCycle的鉤子對應的OnStart和OnStop,手動啟動和關閉容器,以滿足您的實際業務需求。

Fx框架的源代碼分析

主要包括app.go、lifecycle.go、annotated.go、populate.go、inout.go、shutdown.go、extract.go(可以忽略,理解populate.go)以及內部的輔助fxlog、fxlect和lifecycle。

  • 上一篇:網頁制作表格問題
  • 下一篇:計算機二級考試應試技巧
  • copyright 2024編程學習大全網