sponge 介绍
sponge 是一个强大的 Go 开发框架,其核心理念是通过解析 SQL、Protobuf、JSON 文件逆向生成模块化的代码,这些模块代码可灵活组合成多种类型的完整后端服务(类似海绵细胞的特性,打散的海绵细胞能自动重新组合成新的海绵)。sponge 拥有出色的项目工程化能力,提供一站式项目开发解决方案,涵盖代码生成、开发、测试、API 文档生成和部署。sponge 通过模块化架构与AI助手深度融合,大幅提升开发效率、降低技术门槛,助力开发者以”低代码”方式轻松构建稳定可靠的后端系统。
github地址: https://github.com/go-dev-frame/sponge
适用场景
sponge 适用于快速构建多种类型的高性能后端服务,包括但不限于:
RESTful API服务Web服务 (基于Gin)gRPC服务HTTP+gRPC混合服务gRPC Gateway API服务- 云原生微服务
 
此外,开发者还可以通过自定义模板,生成满足业务需求的各类代码。
核心优势
一键生成完整后端服务代码
对于仅需CRUD API的Web或gRPC服务,无需编写任何Go代码。只需连接数据库(如MySQL、MongoDB、PostgreSQL、SQLite),即可一键生成完整后端服务代码,并轻松部署到 Linux 服务器、Docker 或 Kubernetes 上。高效开发通用服务
开发通用的Web、gRPC、HTTP+gRPC或gRPC Gateway服务,只需专注于以下三部分:- 数据库表的定义;
 - 在 Protobuf 文件中定义 API 描述信息;
 - 在生成的模板中,使用内置AI助手或人工编写业务逻辑代码。
 
服务的框架代码和 CRUD API 代码均由 sponge 自动生成。
支持自定义模板,灵活扩展
sponge 支持通过自定义模板生成项目所需的多种代码类型,不局限于Go语言。例如:- 后端代码;
 - 前端代码;
 - 配置文件;
 - 测试代码;
 - 构建和部署脚本等。
 
在页面生成代码,简单易用
sponge 提供在页面生成代码,避免了复杂的命令行操作,只需在页面上简单的填写参数即可一键生成代码。与 AI 助手协同开发,形成开发闭环
sponge 与 内置的 AI 助手(DeepSeek、ChatGPT、Gemini)深度融合,形成一套完整的高效开发解决方案:- sponge:负责基础设施代码生成(服务框架、CRUD API 接口、自定义 API 接口代码(缺少业务逻辑)等)。
 - AI助手:专注业务逻辑实现(表结构 DDL 设计、自定义 API 接口定义、业务逻辑实现代码)。
 
快速开始
安装 sponge 支持在 windows、mac、linux 环境下安装 sponge,点击查看 安装 sponge 说明。
打开生成代码 UI 页面 安装完成后,执行命令打开 sponge UI 页面:
   sponge run
在本地浏览器访问 http://localhost:24631,在页面上操作生成代码,如下图所示:

主要功能
sponge包含丰富的组件(按需使用):
- Web 框架 gin
 - RPC 框架 grpc
 - 配置解析 viper
 - 日志 zap
 - 数据库组件 gorm, mongo-go-driver
 - 缓存组件 go-redis, ristretto
 - 自动化api文档 swagger, protoc-gen-openapiv2
 - 鉴权 jwt
 - 校验 validator
 - Websocket gorilla/websocket
 - 定时任务 cron
 - 消息队列组件 rabbitmq, kafka
 - 分布式事务管理器 dtm
 - 分布式锁 dlock
 - 自适应限流 ratelimit
 - 自适应熔断 circuitbreaker
 - 链路跟踪 opentelemetry
 - 监控 prometheus, grafana
 - 服务注册与发现 etcd, consul, nacos
 - 自适应采集 profile
 - 资源统计 gopsutil
 - 配置中心 nacos
 - 代码质量检查 golangci-lint
 - 持续集成部署 CICD jenkins, docker, kubernetes
 - 生成项目业务架构图 spograph
 - 自定义模板生成代码 go template
 
目录结构
生成的服务代码目录结构遵循 project-layout。
这是生成的单体应用单体仓库(monolith)或微服务多仓库(multi-repo)代码目录结构:
.
├── api            # protobuf文件和生成的*pb.go目录
├── assets         # 其他与资源库一起使用的资产(图片、logo等)目录
├── cmd            # 程序入口目录
├── configs        # 配置文件的目录
├── deployments    # 裸机、docker、k8s部署脚本目录
├── docs           # 设计文档和界面文档目录
├── internal       # 业务逻辑代码目录
│    ├── cache        # 基于业务包装的缓存目录
│    ├── config       # Go结构的配置文件目录
│    ├── dao          # 数据访问目录
│    ├── database     # 数据库目录
│    ├── ecode        # 自定义业务错误代码目录
│    ├── handler      # http的业务功能实现目录
│    ├── model        # 数据库模型目录
│    ├── routers      # http路由目录
│    ├── rpcclient    # 连接grpc服务的客户端目录
│    ├── server       # 服务入口,包括http、grpc等
│    ├── service      # grpc的业务功能实现目录
│    └── types        # http的请求和响应类型目录
├── pkg            # 外部应用程序可以使用的库目录
├── scripts        # 执行脚本目录
├── test           # 额外的外部测试程序和测试数据
├── third_party    # 依赖第三方protobuf文件或其他工具的目录
├── Makefile       # 开发、测试、部署相关的命令集合
├── go.mod         # go 模块依赖关系和版本控制文件
└── go.sum         # go 模块依赖项的密钥和校验文件
这是生成的微服务单体仓库(mono-repo)代码目录结构(也就是大仓库代码目录结构):
.
├── api
│    ├── server1       # 服务1的protobuf文件和生成的*pb.go目录
│    ├── server2       # 服务2的protobuf文件和生成的*pb.go目录
│    ├── server3       # 服务3的protobuf文件和生成的*pb.go目录
│    └── ...
├── server1        # 服务1的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
├── server2        # 服务2的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
├── server3        # 服务3的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
├── ...
├── third_party    # 依赖的第三方protobuf文件
├── go.mod         # go 模块依赖关系和版本控制文件
└── go.sum         # go 模块依赖项的密钥和校验和文件
使用示例
使用 sponge 创建服务示例
- 基于sql创建web服务(包括CRUD)
 - 基于sql创建grpc服务(包括CRUD)
 - 基于protobuf创建web服务
 - 基于protobuf创建grpc服务
 - 基于protobuf创建grpc网关服务
 - 基于protobuf创建grpc+http服务
 
使用 sponge 开发完整项目示例
分布式事务示例
总结
sponge 是一个帮助你大幅提高开发效率、降低开发成本的开发框架,通过支持主流数据库、低代码开发和自动化功能,同时支持自定义的灵活扩展功能。如果您正在寻找一种方法来显著提高开发效率并缩短上线时间,那么sponge绝对值得一试。
专题「golang相关」的其它文章 »
- DeepSeek与Sponge黄金组合打造后端高效开发新范式 (Feb 09, 2025)
 - 使用开发框架sponge快速把单体web服务拆分为微服务 (Sep 18, 2023)
 - 使用开发框架sponge一天多开发完成一个简单版社区后端服务 (Jul 30, 2023)
 - go test命令 (Apr 15, 2022)
 - go应用程序性能分析 (Mar 29, 2022)
 - channel原理和应用 (Mar 22, 2022)
 - go runtime (Mar 14, 2022)
 - go调试工具 (Mar 13, 2022)
 - cobra基础与实践 (Mar 10, 2022)
 - grpc基础与实践 (Nov 27, 2020)
 - 配置文件viper库 (Nov 22, 2020)
 - 根据服务名称查看golang程序的profile信息 (Sep 03, 2019)
 - go语言开发规范 (Aug 28, 2019)
 - goroutine和channel应用——处理队列 (Sep 06, 2018)
 - golang中的context包 (Aug 28, 2018)