Write Spring. Catch wiring mistakes before startup.
SpringGraph is an annotation processor that checks a supported subset of Spring constructor injection while your code compiles. Spring keeps constructing your beans; SpringGraph adds nothing to the runtime.
Status: experimental (0.x). Single-module Java projects. The 0.1.0-rc.4 pre-release is on Maven Central and
GitHub Packages.
error: SG001: No static binding found for com.example.PaymentGateway.
Dependency path:
com.example.OrderController
-> com.example.OrderService
-> com.example.PaymentGateway
Site: mrsluffy.github.io/spring-graph, including the project
milestones. The same pages are in docs/:
- Getting started: install, Gradle and Maven setup, runtime boundaries
- Diagnostics: every SG code
- Support matrix: what is and is not validated
- Graph boundaries: the rules behind the findings
- Evaluation: pilot results, false positives found, build overhead
- Changelog
- Release history: published versions and how to install pre-releases
- IntelliJ plugin: checks the project with a bundled processor, no build changes needed; gutter icons and a tool window (experimental)
Requires JDK 21 to build. The processor itself targets Java 17.
./gradlew build
./gradlew :springgraph-processor:publishToMavenLocal
Modules: springgraph-processor (the product), springgraph-spring (construction-integration experiment, not released),
examples/ (samples and pilots). springgraph-intellij is the IntelliJ plugin, a separate Gradle build
(./gradlew -p springgraph-intellij build); see IntelliJ plugin.
See CONTRIBUTING.md. To report a vulnerability, see SECURITY.md.
Licensed under the Apache License, Version 2.0.