Go-SpringPut engineering capabilities into Go
Configuration, dependencies, lifecycle, and infrastructure are assembled through one model, while your business code stays simple, clear, and direct.
Configuration, dependencies, lifecycle, and infrastructure are assembled through one model, while your business code stays simple, clear, and direct.

Less plumbing, more product
Real Go services are more than handlers. Configuration loading, component initialization, dependency wiring, startup order, and graceful shutdown gradually leak into every project.
Go-Spring gathers those repeated concerns into one consistent application model. You still write plain Go code, but you no longer hand-wire every piece of infrastructure.
Why Go-Spring exists →package main
import "go-spring.org/spring/gs"
func init() {
gs.Provide(&UserService{})
gs.Provide(&UserHandler{})
}
func main() {
gs.Run()
}Startup wiringruntime stays direct
Unified lifecyclestartup and shutdown stay ordered
One application model
The capabilities work together, instead of living as unrelated tools. Configuration drives assembly, the container manages dependencies, and the application context coordinates the full lifecycle.
Load files, environment variables, defaults, and property references in one place, then bind them directly to type-safe structs.
server.port: ${PORT:=9090}Register beans, apply conditions, and inject dependencies at startup, instead of scattering service lookup logic through business code.
Runners, servers, and resource cleanup follow one lifecycle, so service startup and graceful shutdown no longer depend on scattered conventions.
Spring inspired, Go designed
Ecosystem
The core stays restrained, while logging, tooling, and infrastructure integrations evolve independently. Bring in only what the current service actually needs.
Ready to build
Start with a minimal runnable application, then gradually add configuration, IoC, HTTP, and common components.