导航:首页 > APP软件 > golang16app

golang16app

发布时间:2023-07-23 01:10:01

⑴ golang反射框架Fx

Fx是一个golang版本的依赖注入框架,它使得golang通过可重用、可组合的模块化来构建golang应用程序变得非常容易,可直接在项目中添加以下内容即可体验Fx效果。

Fx是通过使用依赖注入的方式替换了全局通过手动方式来连接不同函数调用的复杂度,也不同于其他的依赖注入方式,Fx能够像普通golang函数去使用,而不需要通过使用struct标签或内嵌特定类型。这样使得Fx能够在很多go的包中很好的使用。
接下来会提供一些Fx的简单demo,并说明其中的一些定义。

1、一般步骤

大致的使用步骤就如下。下面会给出一些完整的demo

2、简单demo
将io.reader与具体实现类关联起来

输出:

3、使用struct参数
前面的使用方式一旦需要进行注入的类型过多,可以通过struct参数方式来解决

输出

如果通过Provide提供构造函数是生成相同类型会有什么问题?换句话也就是相同类型拥有多个值呢?
下面两种方式就是来解决这样的问题。
4、使用struct参数+Name标签
在Fx未使用Name或Group标签时不允许存在多个相同类型的构造函数,一旦存在会触发panic。

输出

上面通过Name标签即可完成在Fx容器注入相同类型
5、使用struct参数+Group标签
使用group标签同样也能完成上面的功能

输出

基本上Fx简单应用在上面的例子也做了简单讲解

1、Annotated(位于annotated.go文件) 主要用于采用annotated的方式,提供Provide注入类型

源码中Name和Group两个字段与前面提到的Name标签和Group标签是一样的,只能选其一使用
2、App(位于app.go文件) 提供注入对象具体的容器、LiftCycle、容器的启动及停止、类型变量及实现类注入和两者映射等操作

至于Provide和Populate的源码相对比较简单易懂在这里不在描述
具体源码
3、Extract(位于extract.go文件)
主要用于在application启动初始化过程通过依赖注入的方式将容器中的变量值来填充给定的struct,其中target必须是指向struct的指针,并且只能填充可导出的字段(golang只能通过反射修改可导出并且可寻址的字段),Extract将被Populate代替。 具体源码
4、其他
诸如Populate是用来替换Extract的,而LiftCycle和inout.go涉及内容比较多后续会单独提供专属文件说明。

在Fx中提供的构造函数都是惰性调用,可以通过invocations在application启动来完成一些必要的初始化工作:fx.Invoke(function); 通过也可以按需自定义实现LiftCycle的Hook对应的OnStart和OnStop用来完成手动启动容器和关闭,来满足一些自己实际的业务需求。

Fx框架源码解析
主要包括app.go、lifecycle.go、annotated.go、populate.go、inout.go、shutdown.go、extract.go(可以忽略,了解populate.go)以及辅助的internal中的fxlog、fxreflect、lifecycle

阅读全文

与golang16app相关的资料

热点内容
电极自动编程哪个软件好用 浏览:550
cad看图大师下载的文件在哪 浏览:227
硬盘损坏内部数据怎么修 浏览:880
微信你真列害图片大全 浏览:49
jsin类型可以传数值吗 浏览:532
win10文件从左边滑出 浏览:53
win10关机后桌面文件丢失 浏览:266
watch卸载自带应用程序 浏览:292
有什么plc自学网站 浏览:219
176纯金币假人版本 浏览:334
红米note4微信计步代码 浏览:259
站长之家有app吗 浏览:912
office应用视频教程 浏览:690
html数据库有哪些 浏览:489
钢笔工具线不会变细 浏览:762
access2010数据库上机 浏览:686
flstudio录音教程 浏览:457
图形编程软件哪个好用 浏览:393
要怎么重新下载而且不保存数据 浏览:188
手机软件下载后文件在哪 浏览:515

友情链接