自动的依赖注入尝试

实现一些有趣的想法。

在实现复杂业务项目时, 使用依赖注入是基操.

dig 使用闭包函数和注解实现自动注入, 但是无法友好错误提示, 再加上复杂系统肯定有一两个特殊需求, 不用依赖注入流程时.手动NewStruct 非常不友好, 完全不知道底层依赖了多少层.

wire 虽然没有dig 的弊端, 但是依赖定义完全手动, 麻烦了一些, 但是因为wire.Build定义非常简单, 完全可以根据NewStruct函数自己生成啊

所以实现了一个模版 github.com/go-ex/gin-proto

内置两个工具proto-gingin-inject

使用php解析proto文件,生成gin的路由信息和基础控制器

make proto-gin

使用php解析go代码,根据固定命名规则,生成依赖图。

make gin-inject

gin-inject 工具根据传入参数,直接维护对应结构体的提供者函数+wire库的Build定义

func NewHomeProvider(account *login.Account) *Home  {
    return &Home{}
}

例如上面代码,函数名符合 New{struceName}Provider 的命名格式;

gin-inject 工具就会解析该函数,直接为参数login.Account生成NewAccountProvider提供者,同时生成可被依赖提供函数。 这些都是自动,无需关心。

任何地方无脑用就可以了。完全使用php,laravel 的依赖注入习惯。

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!