2025年6月24日
摘要: 通常我们只需要一行代码即可启动 Go-Spring 应用,即 gs.Run() 这个看似简单的 gs.Run() 背后做了哪些事情呢?本文咱们跟随代码一点点深入分析,探究 Go-Spring 启动与停止的全过程。 gs.Run() 首先来看 gs.Run() 这个入口函数的代码实现。 type Ap 阅读全文
posted @ 2025-06-24 15:50 lvan100 阅读(119) 评论(0) 推荐(0)
摘要: 一、引言 在软件开发的日常中,我们时常陷入一种“框架式焦虑”: 明明想快速写个 Web 服务,却得翻几百行配置文件; 框架自动帮你注入了一堆对象,但你连它是怎么生效的都搞不清楚; 想替换一个核心模块,却发现它早就和其他几十个组件绑死在一起,动一处牵全身。 这类问题的根源,其实并不完全是框架“太复杂” 阅读全文
posted @ 2025-06-24 15:37 lvan100 阅读(36) 评论(0) 推荐(0)
摘要: 为什么需要 mock? 在单元测试中,我们通常希望测试的目标是一个最小可控的单位。然而现实中的业务逻辑往往依赖多个外部模块,比如数据库、HTTP 服务、Redis 缓存、第三方 API 等。这些外部依赖不可控、执行缓慢,甚至可能有副作用,比如写入数据或发送消息。 为了让单测更快、更稳定、更可重复,我 阅读全文
posted @ 2025-06-24 15:36 lvan100 阅读(38) 评论(0) 推荐(0)
摘要: 不久前,我接到了一个需求:开发同学希望能对 RPC 调用进行 mock。但问题在于,client 并没有被抽象成接口,因此无法直接使用传统的 mock 技术。为了实现这个目标,我不得不在 client 的方法内部嵌入 mock 能力。最终实现效果如下所示: type Client struct{} 阅读全文
posted @ 2025-06-24 15:34 lvan100 阅读(23) 评论(0) 推荐(0)
2025年5月4日
摘要: 作为写 Go 的开发者你一定知道,Go 的性能很强,部署也方便,但是,一旦项目变复杂,比如多个服务组件、配置切换、依赖关系杂七杂八、生命周期乱七八糟,那些“手动管理”就很容易让人抓狂。 这时候你是不是怀念 Java 的 Spring?自动注入、配置绑定、生命周期钩子、启动一把梭……啥都帮你弄好了。而 阅读全文
posted @ 2025-05-04 11:09 lvan100 阅读(127) 评论(0) 推荐(0)
摘要: 引言 随着微服务和云原生架构的普及,Go 语言以其高并发、低延迟和简洁语法在后端开发领域迅速崛起。然而,原生 Go 在项目结构、依赖管理、配置热更新等方面相比 Java Spring 生态尚有短板。Go‑Spring 正是在这样的背景下应运而生——它汲取 Java 社区成熟的 Spring / Sp 阅读全文
posted @ 2025-05-04 10:55 lvan100 阅读(465) 评论(0) 推荐(0)
2021年11月18日
摘要: 前言 Go 语言以简单著称,一个很明显的例子就是只需要很少的代码即可实现一个最小的 Web API 。Go-Spring 融合了 Go 简单和 Spring 自动配置的优点。本文通过几个实现最小 Web API 的示例展示 Go-Spring 的简单和强大。 To Gopher 下面是使用 Go 标 阅读全文
posted @ 2021-11-18 09:23 lvan100 阅读(47) 评论(0) 推荐(0)