导航:首页 > 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相关的资料

热点内容
改文件夹名字 浏览:251
sql备份数据库dmp文件 浏览:597
导出来的数据如何快速生成表格 浏览:356
录屏大师视频文件名 浏览:691
刘昊然用哪些app 浏览:928
比较流行的编程软件有哪些 浏览:397
免费儿童编程课有哪些 浏览:889
看本子app哪个好ios 浏览:351
手机内存卡文件位置 浏览:196
网络媒介影响力实证 浏览:266
jsp引用外部class出错 浏览:766
win10隐藏文件夹是灰 浏览:181
mach3用什么软件编程生成g代码 浏览:361
电信电视怎么连接网络连接失败 浏览:877
苹果4s用钱咖挣钱比安卓系统多吗 浏览:945
molight教程 浏览:537
编辑文件的手机软件 浏览:612
qq网名三字伤感闺蜜 浏览:943
怎么查wd文件有多少字 浏览:4
nx如何在已有图中编程 浏览:312

友情链接