Skip to content

Latest commit

 

History

History
110 lines (78 loc) · 3.68 KB

File metadata and controls

110 lines (78 loc) · 3.68 KB

English  |  中文

license GoDoc Go Report Card codecov Build and Test Release Mentioned in Awesome Go

logo

🚀 Gone - Go语言轻量级依赖注入框架

💡 框架简介

Gone 是一个基于Golang标签的轻量级依赖注入框架,通过简洁的注解实现组件依赖管理。下面是一个典型的使用示例(嵌入了gone.Flag的结构体,我们称之为Goner):

type Dep struct {
    gone.Flag
    Name string
}

type Component struct {
    gone.Flag
    dep *Dep        `gone:"*"` //依赖注入
    log gone.Logger `gone:"*"` //注入 gone.Logger

    // 注入配置, 从环境变量 GONE_NAME 中获取值;
    // 如果使用goner/viper 等组件可以可以从配置文件或者配置中心获取值。
    // 参考文档:https://github.com/gone-io/goner
    name string     `gone:"config:name"`
}

func (c *Component) Init() {
    c.log.Infof(c.dep.Name) //使用依赖
    c.log.Infof(c.name) //使用配置
}

✨ 核心特性

  • 全面的依赖注入支持
    • 结构体属性注入(支持私有字段)
    • 函数参数注入(按类型自动匹配)
    • 配置参数注入(支持环境变量、配置中心和配置文件)
    • 第三方组件注入(通过Provider机制) 👉 详细文档
  • 支持为 Goner 定义初始化方法、服务启动停止方法及相关生命周期钩子函数,实现自动化的服务管理和自定义操作。
  • 提供生态goner组件库,支持配置、日志、数据库、大模型、可观察等功能;
  • 提供脚手架工具gonectl,支持项目创建、组件管理、代码生成、测试mock、编译和运行。

架构

architecture

🏁 快速开始

环境准备

  1. 安装必要工具
go install github.com/gone-io/gonectl@latest
go install go.uber.org/mock/mockgen@latest

创建项目

gonectl create myproject
cd myproject

运行项目

go mod tidy
gonectl run ./cmd/server

更多文档

更新记录

👉🏻 https://github.com/gone-io/gone/releases

贡献

如果您发现了错误或有功能请求,可以随时提交问题 ,同时欢迎提交拉取请求

联系方式

如果您有任何问题,欢迎通过以下方式联系我们:

许可证

gone 在 MIT 许可证下发布,详情请参阅 LICENSE 文件。