{"id":13493744,"url":"https://github.com/go-spring/go-spring","last_synced_at":"2026-04-06T09:02:19.048Z","repository":{"id":37432375,"uuid":"214418572","full_name":"go-spring/go-spring","owner":"go-spring","description":"🔥 [released] 基于 IoC 的 IDLs-First 的 Go 后端一站式开发框架 ( All-in-One Development Framework on IoC and IDLs-First for Go ) 🚀 ","archived":false,"fork":false,"pushed_at":"2026-04-01T07:24:49.000Z","size":4952,"stargazers_count":1728,"open_issues_count":21,"forks_count":234,"subscribers_count":47,"default_branch":"master","last_synced_at":"2026-04-01T09:43:49.305Z","etag":null,"topics":["auto-configuration","dependency-injection","inversion-of-control","modulith","out-of-box-experience","spring","spring-boot"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/go-spring.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://raw.githubusercontent.com/go-spring/go-spring/master/sponsor.png"}},"created_at":"2019-10-11T11:26:55.000Z","updated_at":"2026-04-01T07:24:56.000Z","dependencies_parsed_at":"2023-02-10T07:45:53.984Z","dependency_job_id":"96ac58e8-1fab-4950-91cf-2a5537f85a7c","html_url":"https://github.com/go-spring/go-spring","commit_stats":{"total_commits":1286,"total_committers":14,"mean_commits":91.85714285714286,"dds":0.03265940902021769,"last_synced_commit":"43b09b1521293823ff36adfe0e6909ebab3e6f40"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/go-spring/go-spring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-spring%2Fgo-spring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-spring%2Fgo-spring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-spring%2Fgo-spring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-spring%2Fgo-spring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/go-spring","download_url":"https://codeload.github.com/go-spring/go-spring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/go-spring%2Fgo-spring/sbom","scorecard":{"id":432486,"data":{"date":"2025-08-11","repo":{"name":"github.com/go-spring/go-spring","commit":"d74ec5cc802407a7696d87fbfe3641b02b855476"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/go-spring/go-spring/main.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-1031 / GHSA-crxj-hrmp-4rwf","Warn: Project is vulnerable to: GO-2021-0052 / GHSA-h395-qcrw-5vmq","Warn: Project is vulnerable to: GHSA-3vp4-m3rf-835h","Warn: Project is vulnerable to: GO-2023-1737 / GHSA-2c4m-59x9-fr2g","Warn: Project is vulnerable to: GO-2023-2153 / GHSA-m425-mq94-257g / GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T03:42:01.200Z","repository_id":37432375,"created_at":"2025-08-19T03:42:01.200Z","updated_at":"2025-08-19T03:42:01.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31466228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-configuration","dependency-injection","inversion-of-control","modulith","out-of-box-experience","spring","spring-boot"],"created_at":"2024-07-31T19:01:18.393Z","updated_at":"2026-04-06T09:02:19.031Z","avatar_url":"https://github.com/go-spring.png","language":null,"readme":"\u003cdiv\u003e\n \u003cimg src=\"https://raw.githubusercontent.com/go-spring/go-spring/master/logo@h.png\" width=\"140\" height=\"*\" alt=\"logo\"/\u003e\n\u003c/div\u003e\n\u003cbr/\u003e\n\n\u003e Go-Spring 是一个由众多子项目组成的大型生态。建议大家为这个总览仓库点亮 ⭐，这样能够更直观地展示 Go-Spring 的整体价值。\n\n\u003e Go-Spring is a large ecosystem with many sub-projects. We recommend starring this overview repository so that the full\n\u003e value of Go-Spring can be more clearly recognized.\n\nGo-Spring 是对传统 Go 项目开发痛点的一次有力回应。它借鉴了 Java 社区 Spring / Spring Boot\n的成功经验，以依赖注入和自动配置为核心基础，把“开箱即用”设为首要目标。同时，它坚持 Go\n社区简洁高效的哲学，融合了代码生成等优秀理念，在保持轻量与灵活的前提下，带来全新的开发体验。Go-Spring 不仅降低了项目搭建的复杂度，更为\nGo 应用开发提供了里程碑式的突破。\n\nGo-Spring is a bold response to the challenges of traditional Go project development. Inspired by the success of Spring\nand Spring Boot in the Java community, it builds on dependency injection and auto-configuration as its foundation, with\n“out-of-the-box” usability as a top priority. At the same time, it stays true to Go’s philosophy of simplicity and\nefficiency, incorporating ideas like code generation to deliver a fresh development experience. Go-Spring not only\nreduces project setup complexity but also represents a milestone breakthrough for Go application development.\n\n## 特性\n\n1. **开箱即用 \u0026 无侵入设计** (**Out-of-the-box \u0026 Non-intrusive Design**)  \n   提供即插即用的能力，不强制框架结构，让开发者专注于业务逻辑。  \n   Works immediately without enforcing rigid framework structures, letting developers focus on business logic.\n\n\n2. **依赖注入与自动装配** (**Dependency Injection \u0026 Auto-configuration**)  \n   借鉴 Spring 的 Starter 机制，实现灵活的依赖管理与自动配置，支撑开箱即用体验。  \n   Inspired by Spring’s Starter mechanism, it enables flexible dependency management and automatic setup to support an\n   out-of-the-box experience.\n\n\n3. **统一的基础设施框架** (**Unified Infrastructure Frameworks**)  \n   提供可扩展的配置系统与日志系统，为依赖注入和自动装配打下坚实基础。  \n   Provides extensible configuration and logging systems that serve as the foundation for DI and auto-configuration.\n\n\n4. **模块化项目脚手架** (**Modular Project Scaffolding**)  \n   基于 **modulith** 模块化理念，快速生成项目结构，提升工程组织性与可维护性。  \n   Generates project structures based on the **modulith** modularization concept, improving organization and\n   maintainability.\n\n\n5. **IDLs-First 设计理念** (**IDLs-First Philosophy**)  \n   采用现代化 IDL 语法，支持可空、嵌入、模板等特性，推动契约驱动的开发模式。  \n   Adopts modern IDL syntax with support for nullable types, embedding, templates, and more—promoting contract-first\n   development.\n\n\n6. **多协议代码生成** (**Multi-protocol Code Generation**)  \n   内置代码生成工具，支持 HTTP、gRPC、Thrift 等多种协议，减少重复工作。  \n   Built-in code generators support HTTP, gRPC, Thrift, and other protocols, reducing repetitive work.\n\n\n7. **抽象化运行模型** (**Abstracted Runtime Models**)  \n   通过 **Runner、Job、Server** 三种核心模型，统一抽象多种服务形态，简化扩展与集成。  \n   Introduces three unified models—**Runner, Job, Server**—to simplify integration and support multiple service types.\n\n\n8. **丰富的组件生态** (**Rich Component Ecosystem**)  \n   提供 MySQL、Redis 等常用中间件的 Starter，真正做到即插即用。  \n   Provides ready-to-use Starters for common middleware like MySQL and Redis.\n\n\n9. **无缝测试集成** (**Seamless Testing Integration**)  \n   与 `go test` 深度集成，提供简洁高效的单元测试支持。  \n   Deeply integrates with `go test` to deliver simple yet powerful unit testing capabilities.\n\n## 模块 (Modules)\n\n| 模块名\u003cbr\u003eModule Name                                                    | 描述\u003cbr\u003eDescription                                                        |\n|-----------------------------------------------------------------------|--------------------------------------------------------------------------|\n| [go-spring :: log](https://github.com/go-spring/log)                  | 前后端统一的日志库\u003cbr\u003eUnified front-end and back-end log                          |\n| [spring-base :: assert](https://github.com/go-spring/spring-base)     | 用于 Go 单测的断言库\u003cbr\u003eAn assertion library for Go unit tests                   |\n| [spring-core](https://github.com/go-spring/spring-core)               | 核心项目\u003cbr\u003eCore project                                                     |\n| [gs-mock](https://github.com/go-spring/gs-mock)                       | 现代化的、类型安全的 Go 语言 mocking 库\u003cbr\u003eA modern, type-safe mocking library for Go |\n| [starter-gorm-mysql](https://github.com/go-spring/starter-gorm-mysql) | gorm mysql 启动器\u003cbr\u003eStarter for gorm with mysql                            |\n| [starter-redigo](https://github.com/go-spring/starter-redigo)         | redigo 启动器\u003cbr\u003eStarter for redigo                                         |\n| [starter-go-redis](https://github.com/go-spring/starter-go-redis)     | go-redis 启动器\u003cbr\u003eStarter for go-redis                                     |\n| [gs-http-gen](https://github.com/go-spring/gs-http-gen)               | 基于 IDL 的 HTTP 代码生成工具\u003cbr\u003eHTTP code generation tool based on IDL files     |\n| [gs](https://github.com/go-spring/gs)                                 | Go-Spring 工具管理器\u003cbr\u003eGo-Spring Tools Manager                               |\n| [gs-init](https://github.com/go-spring/gs-init)                       | 创建新项目的工具\u003cbr\u003eCreate new projects                                          |\n| [gs-add](https://github.com/go-spring/gs-add)                         | 为项目添加新组件的工具\u003cbr\u003eAdd new components                                        |\n| [gs-gen](https://github.com/go-spring/gs-gen)                         | 根据 IDL 文件生成 Go 服务端代码\u003cbr\u003eGenerate go server code based on IDL files       |\n| [skeleton](https://github.com/go-spring/skeleton)                     | 实践 modulith 的项目骨架\u003cbr\u003eModulith practice project skeleton                  |\n\n## 开箱 (Getting Started)\n\n1. 安装 [gs](https://github.com/go-spring/gs) 工具。Install the [gs](https://github.com/go-spring/gs) tool.\n\n```shell\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/go-spring/gs/HEAD/install.sh)\"\n```\n\n2. 创建项目。Create a project.\n\n```shell\ngs init --module my-git/my-group/my-module\n```\n\n3. 运行程序。 Run the program.\n\n```shell\ngo run main.go\n```\n\n\u003e 你可以找到更多的[文档](docs)和[示例](docs/4.examples)。  \n\u003e Find more [docs](docs) and [examples](docs/4.examples).\n\n## 贡献 (Contribution)\n\n如何成为贡献者？提交有意义的 PR 或者需求，并被采纳。  \nHow to become a contributor? Submit meaningful PRs or feature requests, and have them accepted.\n\n## 交流 (Communication)\n\n\u003ctable style=\"border: none;\"\u003e\n\u003ctr style=\"border: none;\"\u003e\n\u003ctd style=\"text-align: center; border:none;\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-spring/go-spring-website/master/qq(1).jpeg\" width=\"*\" height=\"180\"  alt=\"\"/\u003e\u003c/td\u003e\n\u003ctd style=\"text-align: center; border:none;\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/go-spring/go-spring-website/master/go-spring-action.jpg\" width=\"*\" height=\"180\"  alt=\"\"/\u003e\u003c/td\u003e\n\u003c/tr\u003e \n\u003ctr style=\"border: none;\"\u003e\n\u003ctd style=\"text-align: center; border:none;\"\u003eQQ群号: 721077608\u003c/td\u003e\n\u003ctd style=\"text-align: center; border:none;\"\u003e公众号: GoSpring实战\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 捐赠 (Donation)\n\n\u003cimg src=\"https://raw.githubusercontent.com/go-spring/go-spring/master/sponsor.png\" width=\"140\" height=\"*\" /\u003e\n\n为了推动 Go-Spring 的持续发展，我们诚挚邀请您支持本项目。您的捐赠将帮助我们更快地迭代功能、完善生态，并壮大社区力量。\n\nTo drive the continuous growth of Go-Spring, we warmly invite your support. Your donation will help us iterate faster,\nimprove the ecosystem, and strengthen the community.\n\n## Star History\n\n\u003cimg src=\"https://api.star-history.com/svg?repos=go-spring/go-spring\u0026type=Date\" width=\"600\" alt=\"\"/\u003e\n\n## 鸣谢 (Thanks)\n\nThanks to JetBrains' IntelliJ IDEA product for providing a convenient and efficient code editing and testing\nenvironment.\n\n## 许可证 (License)\n\nThe Go-Spring is released under version 2.0 of the Apache License.\n","funding_links":["https://raw.githubusercontent.com/go-spring/go-spring/master/sponsor.png"],"categories":["Go","Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-spring%2Fgo-spring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgo-spring%2Fgo-spring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgo-spring%2Fgo-spring/lists"}