Skip to content

v1.5.0 — Spring compatibility & zero-config modules

Latest

Choose a tag to compare

@ivannavas ivannavas released this 08 Jul 17:59

What's new

Deeper Spring (and JSR-330) compatibility, plus zero-config modules. Sprout now blends into a Spring Boot app with even less wiring — and stays framework-agnostic at its core.

Mix each framework's DI annotations — both ways

  • A Sprout component works when wired with Spring's or JSR-330's @Autowired / @Value / @Qualifier (and jakarta.inject.@Inject / @Named), right alongside Sprout's own.
  • A Spring-managed bean works when wired with Sprout's @Autowired / @Value / @Qualifier / @PostConstruct (field injection + @PostConstruct; use Spring's @Autowired for constructor injection on a Spring bean).
  • Same-named annotations from either framework no longer clash.

Treat this as a compatibility net for mixed or migrating code — not a style. The recommendation stands: use Sprout's annotations in Sprout components, and each DI container's own annotations in its own beans. sprout-core never references Spring or the inject API; the starter contributes those equivalents through a DiAnnotationContributor SPI.

Zero-config module scanning

Framework modules now contribute their own packages to the component scan, so the sprout-openai / sprout-anthropic @Model executors are discovered the moment the jar is on the classpath — no sprout.scan.base-packages needed just to pick them up.

Monitoring activates on its own

Adding sprout-monitoring installs the in-memory usage store and subscribes the collector automatically (exposed as the Spring usageStore bean) — declare your own @UsageStore and it takes over. No package to scan or configure.

Full Changelog: v1.4.0...v1.5.0