Gone框架介绍
文章平均质量分 90
Gone是一个为熟悉Spring的程序员设计的Golang框架,它整合了依赖注入和Web功能,使得在Golang中的应用程序管理和开发更加方便。在这个专栏中,我将介绍Gone的使用和实现
dapeng-大鹏
我撸了一个golang的依赖注入框架: github.com/gone-io/gone,能够很方便的做Web服务开发,推荐你使用
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用goner/otel/meter实现应用指标监控
详细介绍如何使用Gone框架的goner/otel/meter组件,结合Prometheus实现应用的指标监控、数据采集和可视化展示,帮助开发者轻松构建完整的应用监控系统原创 2025-05-10 09:38:59 · 1135 阅读 · 0 评论 -
goner/otel 在Gone框架接入OpenTelemetry
goner/otel 组件让 Gone 框架轻松集成 OpenTelemetry,实现微服务分布式追踪。通过 gonectl 快速创建项目,简单五步即可采集和导出链路数据,支持控制台和 Jaeger 等后端,提升系统可观测性与运维效率。原创 2025-05-08 12:56:00 · 1084 阅读 · 0 评论 -
gone框架命令行工具gonectl介绍
`gonectl` 是 Gone 框架的官方命令行工具,旨在简化 Gone 项目的开发流程。它提供了一系列便捷命令,帮助开发者快速创建项目、管理模块、生成代码和构建应用程序。无论您是 Gone 新手还是有经验的开发者,`gonectl` 都能大幅提高您的开发效率。原创 2025-04-30 09:33:54 · 751 阅读 · 0 评论 -
Gone 框架的服务注册与发现:打造高效微服务架构
本文深入探讨Gone框架中服务注册与发现的实现机制,介绍其在微服务架构中解决动态通信、负载均衡和高可用等核心问题的方式。文章详细阐述了Gone如何优雅集成Nacos、Consul和Etcd等服务治理组件,提供了实战示例和原理解析,并说明了自定义组件的开发方法,为Go开发者提供完整的微服务治理解决方案。原创 2025-04-21 15:56:59 · 693 阅读 · 0 评论 -
Gone 如何读取配置,如何对接配置中心?
本文详细介绍了Gone框架的配置管理系统,展示了其三层配置方案:核心框架内置环境变量支持、本地配置文件读取和配置中心对接。Gone通过统一的Configure接口、智能的ConfigProvider和默认的EnvConfigure实现,提供了类型安全的配置注入、多种配置源支持和灵活的默认值机制。系统支持从环境变量、多格式配置文件到Apollo、Nacos等多种配置中心,满足从简单应用到复杂分布式系统的各类配置管理需求。原创 2025-04-21 09:24:21 · 1057 阅读 · 0 评论 -
使用Gone MCP 组件编写MCP Server
Gone MCP是基于MCP协议封装的Go组件,支持快速构建AI模型与业务系统的集成。组件提供服务端和客户端实现,支持两种定义方式(Goner Define和Functional Define)来定义Tool、Prompt和Resource。服务端支持Stdio和SSE两种通信通道,可配置Hooks和ContextFunc,并支持多实例。客户端支持多实例配置、Stdio/SSE传输及自定义Transport。通过简洁的API设计,开发者可以轻松实现AI模型与外部系统的交互。原创 2025-04-18 21:20:48 · 1021 阅读 · 0 评论 -
使用gone v2 的Provider 机制升级改造 goner/xorm 的过程记录
本文详细记录了对 goner/xorm 组件的升级改造过程,主要解决了原设计中 Goner 机制和 Provider 机制并存导致的复杂性问题以及测试覆盖困难。通过统一采用 gone v2 的 Provider 机制实现,重构了代码结构,使各组件职责更加清晰,同时保持了与原有配置和注入方式的完全兼容性。改造后不仅保留并增强了原有的事务管理和 SQL 拼接功能,还显著提高了代码的可测试性和测试覆盖率,为未来的功能扩展和维护奠定了良好基础。原创 2025-04-14 11:44:34 · 1145 阅读 · 0 评论 -
使用 gone.WrapFunctionProvider 快速接入第三方服务(下)—— LLM接入支持 openAI 和 deepseek
本文将介绍如何使用 gone.WrapFunctionProvider 和配置注入来快速接入大型语言模型(LLM)服务,包括 OpenAI 和 Deepseek。我们将详细说明这种方式的实现原理和最佳实践。原创 2025-04-10 18:14:33 · 1070 阅读 · 0 评论 -
使用 gone.WrapFunctionProvider 快速接入第三方服务(上)- 接入Elastic Search
本文详细介绍了如何使用Gone框架的WrapFunctionProvider功能快速接入第三方服务。通过Elasticsearch集成的实例,展示了配置注入、单例模式和错误处理的最佳实践。文章重点阐述了WrapFunctionProvider的实现原理,包括配置自动注入、资源单例管理等特性,并提供了完整的代码示例和使用指南。这种集成方式不仅适用于Elasticsearch,还可以推广到Redis、MySQL等其他第三方服务的接入,具有代码简洁、配置灵活、资源管理合理等优势,能够显著提高开发效率。原创 2025-03-26 16:38:47 · 1236 阅读 · 0 评论 -
Gone v2 配置管理4:连接Apollo配置中心
该文档详细介绍了Gone Apollo组件,这是基于携程开源的Apollo配置中心为Gone框架开发的集成组件。该组件提供了配置的动态获取和实时更新功能,使应用能够集中管理不同环境和不同集群的配置信息,并在配置修改后实时推送到应用端。文档包含了组件的快速入门指南,详细说明了如何加载Apollo配置组件、配置Apollo连接信息以及在应用中使用配置。特别强调了配置动态更新的实现方式,通过开启apollo.watch功能,Apollo组件会监听配置变更并自动更新已注册的配置项,但需要使用指针类型才能实现动态更原创 2025-03-24 21:32:18 · 970 阅读 · 0 评论 -
Gone v2 配置管理3:连接 Nacos 配置中心
该文档描述了Gone框架的Nacos配置中心组件,该组件通过使用阿里巴巴的Nacos作为后端,实现了分布式系统中的动态配置管理。这一集成方案提供了集中化的配置管理能力,支持无需重启服务的实时配置更新。该组件支持多种配置格式(JSON、YAML、Properties、TOML),通过命名空间实现逻辑分组,并提供配置的版本控制功能。文档详细介绍了客户端配置参数、服务器连接设置、配置属性以及分组选项。它包含了全面的实施指南,提供了配置文件设置和Go代码集成的示例。该组件通过Go结构体标签提供灵活的配置绑定能力,原创 2025-03-24 21:24:31 · 1144 阅读 · 0 评论 -
Gone框架模块化改造之路
本文详细介绍了Gone框架从单一仓库到模块化架构的改造过程。Gone是一个轻量级的Go语言依赖注入框架,通过将各功能组件(Goner)分离为独立模块,解决了依赖膨胀、版本管理困难等问题。文章阐述了改造背景、实施过程、技术挑战及解决方案,包括接口抽象、单仓库多模块管理和依赖解耦等核心技术。这次改造使Gone更符合"小而美"的设计理念,为开发者提供了更灵活、高效的组件化开发体验。原创 2025-03-23 10:08:22 · 1139 阅读 · 0 评论 -
Gone v2 配置管理2:使用 goner/viper/remote链接远程的配置中心,支持etcd、consul、firestore、nats
本文详细介绍了Gone Viper Remote组件,这是一个专为Gone框架设计的强大远程配置管理解决方案。该组件扩展了Viper配置系统,支持从etcd、consul等多种远程配置中心获取配置信息,并提供配置热更新、加密配置和本地配置回退等高级功能。文档涵盖了组件的安装方法、基本使用、安全配置、工作原理和最佳实践,适合需要构建灵活、可靠的分布式配置系统的Go开发者。无论是单体应用还是微服务架构,Gone Viper Remote都能帮助开发者轻松实现集中式配置管理,提高系统的可维护性和可扩展性。原创 2025-03-22 23:18:14 · 964 阅读 · 0 评论 -
Gone v2 配置管理1:使用 Gone Viper 组件进行本地配置
Gone Viper 是为 Gone 框架打造的高度灵活的配置管理组件,基于 spf13/viper 实现,为 Go 开发者提供了一站式的配置解决方案。它支持 JSON、YAML、TOML 和 Properties 等多种格式的配置文件,并实现了智能的配置文件查找和加载机制。该组件允许开发者通过简单的标签注入或 API 调用来访问配置,同时支持层级化配置结构、默认值设置以及环境变量覆盖功能。Gone Viper 的设计特别考虑了不同环境(开发、测试、生产)的配置需求,通过预定义的加载顺序确保配置正确合并。无原创 2025-03-21 12:52:39 · 1356 阅读 · 0 评论 -
Gone gRPC 组件使用指南
本文档详细介绍了 Gone 框架中 gRPC 组件的两种实现方式:传统方式和基于 Provider 机制的 Gone V2 方式。通过完整的示例代码,展示了从 protobuf 定义、代码生成到服务端/客户端实现的全过程。特别强调了 Gone V2 Provider 机制带来的简化优势,包括自动依赖注入、灵活的配置管理等特性,帮助开发者更高效地构建 gRPC 服务。原创 2025-03-20 23:08:35 · 888 阅读 · 0 评论 -
使用Gone V2 的Provide机制改造goner/grpc组件
手动注册机制违背DI原则服务端需要显式实现接口,这与Gone框架"自动装配"的核心理念相悖开发者需要手动管理gRPC服务的注册过程,而理想的依赖注入框架应该通过标签或约定自动完成这种绑定客户端实现存在大量样板代码每个gRPC客户端都需要实现相同模式的Address()和Stub()方法这些重复性的模板代码与Gone V2通过Provider机制消除重复代码的设计目标不符配置获取方式不够灵活,地址构建逻辑需要手写。原创 2025-03-20 18:12:31 · 1143 阅读 · 0 评论 -
如何给Gone框架编写Goner组件(下)——给对接Apollo的Goner组件编写测试代码
依赖注入与接口抽象将外部依赖(如viper和agollo)外部化,使代码具备更好的可测试性。Mock外部模块使用mockgen生成模拟对象,避免了在测试环境中对实际Apollo服务的依赖,大大降低了测试成本。完善的测试场景设计覆盖了配置读取、获取和变更监听等关键功能,确保组件在各种场景下均能稳定运行。提升代码可维护性通过单元测试为后续代码维护和重构提供了可靠保障,同时也为其他Gone组件的开发提供了可借鉴的测试方法。原创 2025-03-19 12:57:59 · 981 阅读 · 4 评论 -
如何给Gone框架编写Goner组件(上)——编写一个Goner对接Apollo配置中心
Gone是一个基于Go语言的依赖注入框架,而Goner则是基于Gone框架开发的可复用组件。通过编写Goner组件,我们可以将特定功能模块化,便于在不同项目中复用。配置管理界面(Portal):供用户管理配置配置服务(ConfigService):提供配置获取接口客户端SDK:与服务端交互,获取/监听配置变化。原创 2025-03-18 18:08:06 · 1120 阅读 · 0 评论 -
Gone框架中的延迟依赖注入:LazyFill()与option:lazy标签
LazyFill()选项和标签,它们都可以有效解决循环依赖问题。在实际应用中,应该根据具体需求选择合适的机制,并遵循最佳实践,以确保代码的可维护性和可靠性。通过合理使用这两种机制,可以在保持组件间依赖关系的同时,避免循环依赖带来的问题,从而构建更加健壮的应用程序。Init()Provide()Inject()等方法 包括:Init()没有返回值的Init方法有返回值的Init方法参数为 tagConf 的Provide方法没有参数的Provide方法按类型提供值的Provide方法。原创 2025-03-18 12:08:29 · 1128 阅读 · 0 评论 -
Gone v2 Tracer 组件-给微服务提供统一的traceID
是 Gone 框架的分布式追踪组件,用于提供了统一的trace ID。通过该组件,您可以轻松地在 Gone 应用中实现分布式追踪,跟踪请求在多个服务和多个 goroutine 之间的传递,便于问题排查和性能分析。库获取goroutine ID,并通过sync.Map维护goroutine ID与追踪ID的映射关系。同一个goroutine中不要重复设置traceId,如果尝试重复设置,将会保留第一次设置的值。:通过HTTP头或gRPC元数据传递追踪ID,实现跨服务的请求追踪。原创 2025-03-17 10:23:28 · 1127 阅读 · 0 评论 -
Gone v2 如何解决Goner间的循环依赖问题
这意味着,如果组件A依赖组件B,且B需要初始化,那么A的字段填充不仅依赖B的存在,还依赖B的初始化完成。:如果存在循环依赖,框架无法确定组件的初始化顺序,可能导致某些组件在依赖未完全初始化的情况下被使用。框架通过拓扑排序算法检测依赖图中的循环,如果发现循环,就会抛出panic,提示开发者解决这个问题。这就形成了一个无法打破的循环依赖链,框架无法确定初始化顺序,因此会抛出panic。:循环依赖可能导致初始化过程陷入死锁,特别是当所有组件都需要初始化时。关键在于,当一个字段依赖的组件被标记为。原创 2025-03-16 16:52:29 · 946 阅读 · 0 评论 -
Gone v2.0.3发布,新增allowNil 选项:优雅处理可选依赖
allowNil是 Gone 框架中的一个标签选项,用于标记那些"可以为空"的依赖。当一个字段被标记为allowNil时,如果框架无法找到或注入对应的依赖,程序会继续执行而不会因为依赖缺失而失败。allowNil选项是 Gone 框架提供的一个强大特性,它允许我们优雅地处理可选依赖,提高系统的健壮性和灵活性。通过合理使用这一特性,我们可以构建更加适应性强、容错能力高的应用程序。原创 2025-03-16 16:49:50 · 680 阅读 · 0 评论 -
Gone 从 v1 到 v2 的更新分析
v1 版本中,组件需要嵌入,而在 v2 版本中,组件只需要嵌入gone.Flag// v1 版本// v2 版本gone.Flag概念简化:移除宗教性术语,使用更直观的技术术语接口重新设计:减少内部方法的暴露,使接口更加清晰组件加载机制改进:提供更加一致和灵活的组件加载方式Provider 机制引入:替代 Vampire 概念,提供更强大的组件创建和提供能力生命周期管理优化:使组件的生命周期更加清晰和可预测多实例支持:允许在同一个应用程序中创建多个 Gone 框架实例动态组件获取。原创 2025-03-14 13:03:10 · 1166 阅读 · 0 评论 -
Gone v2 中 Gone-Gin 性能测试报告
Gone-Gin 是基于 Gin 框架的扩展,它提供了更加便捷的依赖注入和参数绑定功能,使得开发者可以更加专注于业务逻辑的实现,而不必关心请求参数的解析和绑定过程。本文档将介绍 Gone-Gin 的实现原理以及与原生 Gin 的性能对比。原创 2025-03-13 19:29:45 · 1101 阅读 · 0 评论 -
Gone v2 提供 gRPC服务
在Gone中使用gRPC,需要完成以下几步:编写服务端编写服务端Goner,匿名嵌入proto协议生成代码的 默认实现重载proto文件中定义的接口方法,编写提供服务的具体业务逻辑实现接口的方法,在该方法中完成服务注册将 服务端Goner 注册到 Gone框架启动服务编写客户端编写客户端Goner,嵌入proto协议生成代码的客户端接口实现接口的Address和Stub方法,Address方法返回服务端地址,Stub初始化客服端接口将 客户端Goner 注册到 Gone框架。原创 2025-03-12 16:46:36 · 456 阅读 · 0 评论 -
Gone v2 Gin 组件,在gin中使用依赖注入
`gone-gin` 是一个基于 [gin-gonic/gin](https://github.com/gin-gonic/gin) 的 Web 框架封装,为 Gone 框架提供 HTTP 服务支持。它提供了路由管理、中间件处理、HTTP 注入、SSE(Server-Sent Events)等功能,使得在 Gone 框架中开发 Web 应用更加便捷。原创 2025-03-12 12:36:51 · 1790 阅读 · 0 评论 -
Gone V2的 依赖注入介绍
依赖注入介绍什么是 Goner?`gone` 标签的格式代码示例如何将 Goner 注册到 Gone 框架?方式一:单个注册方式二:批量注册依赖注入的执行时机手动完成依赖注入方式一:结构体注入(StructInjector)方式二:函数参数注入(FuncInjector)总结在使用 Gone 框架时,你可能会好奇它是如何进行依赖注入的。本文将带你深入了解 Gone 的注入机制,并通过示例让你轻松掌握它的用法。在 Gone 框架中,被注入的对象称为Goner。对象必须嵌入gone.Flag。原创 2025-03-11 15:15:23 · 848 阅读 · 0 评论 -
Gone V2 Provider 机制介绍
Gone V2 Provider 机制介绍1. Gone 的依赖注入流程2. 不同的 Provider2.1 按类型注入2.2 按名字注入2.3 基于名字的多类型 Provider3. “星号” Provider:`*`总结Gone V2 版本完全基于 Provider 机制实现依赖注入,其核心思想是通过 Provider 为对象提供依赖,而不必将所有第三方对象都包装为Goner。下面将从 Gone 的依赖注入流程、Provider 的分类及其使用示例等方面进行详细说明。按类型注入。原创 2025-03-11 11:37:59 · 1057 阅读 · 0 评论 -
Gone v2 版本正式发布
Gone 是一个轻量级的golang依赖注入框架,正式发布V2版本。原创 2025-03-10 21:43:05 · 702 阅读 · 0 评论 -
Goland如何玩依赖注入——基于gone@v2创建一个service
经过多天的工作,终于把gone2的beta版本发布出去了。在v2版本中,做了很多更新,最大的改进是将一些不必要的概念给隐藏起来了,提供了Provider机制……原创 2025-03-10 18:59:14 · 820 阅读 · 0 评论 -
Gone@v2 使用说明
Goner是Gone框架的基本组件单元,只需嵌入gone.Flag即可。原创 2025-03-07 10:15:50 · 544 阅读 · 0 评论 -
gone v1.1.1发布,支持数据集群和多数据库
gone v1.1.1发布,支持数据集群和多数据库原创 2024-11-21 14:27:53 · 938 阅读 · 0 评论 -
Gone框架介绍33 - HTTP 注入说明
本文介绍Gone支持的HTTP参数注入原创 2024-06-22 13:03:41 · 1173 阅读 · 0 评论 -
Gone框架介绍32 - 函数参数的依赖注入
函数参数的依赖注入,是v1.x版本正式发布的新功能,允许使用Goners仓库中的Goners来自动生成函数的参数对应的`[]reflect.Value`数组。这个功能由`Cemetery`接口的`InjectFuncParameters`方法提供。业务编写上,一般情况,不推荐使用该功能;如果尝试扩展Gone框架的功能,可以使用该功能。原创 2024-06-22 12:58:59 · 398 阅读 · 0 评论 -
Gone框架介绍31 - 使用`goner/zap`替代logrus默认实现,提升日志输出的效率
goner/zapgone是可以高效开发Web服务的Golang依赖注入框架。原创 2024-06-22 12:57:05 · 933 阅读 · 0 评论 -
Gone框架介绍30 - 使用`goner/gin`提供Web服务
goner/gingone是可以高效开发Web服务的Golang依赖注入框架。原创 2024-06-22 12:54:14 · 1188 阅读 · 0 评论 -
Gone——golang依赖注入框架介绍
在Gone启动前,需要将所有的Goners注册到Gone框架,启动时Gone会对所有Goners的属性进行自动装配,完成依赖注入,编写组件不必关心依赖的实现和依赖的接口是如何来的,只需要直接使用就可以了。Gone启动后,会 复活 所有 Goners,建立一个 天国,“天国的所有人都不再残缺,他们想要的必定得到满足”。虽然golang的反射一直被人诟病太慢,但是在Gone中依赖注入只是程序的启动阶段,不影响运行阶段的速度,最多就是给启动过程增加几毫秒的时间,带来的好处却是不再需关心各种依赖如何创建。原创 2024-06-20 10:25:21 · 1701 阅读 · 0 评论 -
Gone框架介绍29 - 在Gone中使用gRPC通信
本介绍如何在gone框架中使用gRPC原创 2024-06-19 22:34:51 · 731 阅读 · 0 评论 -
Gone框架介绍28 - 使用goner.IsDefault 将Goner设置为接口的默认实现
本文介绍如何将Goner设置为接口的默认实现,解决按类型注入的歧义性,方便按类型依赖注入,省去记忆GonerId的麻烦。原创 2024-06-19 05:30:00 · 741 阅读 · 0 评论 -
Gone框架介绍27 - 再讲 Goner 和 依赖注入
本文介绍Gone框架的依赖注入设计逻辑原创 2024-06-16 21:37:29 · 1315 阅读 · 0 评论
分享