Experimental: runtime usage report + /actuator/bootusage endpoint #47023
+2,049
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds an experimental runtime usage reporting feature that generates a structured JSON (and optional Markdown) report of auto‑configuration behavior, starter usage, bean origins, and policy outcomes. Exposes the report via a new Actuator endpoint:
/actuator/bootusage
.Motivation
Helps developers:
Key Components
UsageAnalysisAutoConfiguration
UsageReportService
,UsageReportGenerator
,StarterUsageAnalyzer
BeanOriginTrackingPostProcessor
UsageEndpoint
+UsageEndpointAutoConfiguration
UsageReportCustomizer
(augment structured report)UsagePolicy
(validate and optionally fail startup)bootusage-schema-v1.json
bootusage.adoc
Configuration Properties (prefix
spring.boot.usage.report.
)enabled
(boolean) – master switch (default: false)cache-ttl
(duration, ms by default) – endpoint cache TTL (0 = no cache)include-origins
(boolean) – include sanitized bean origin pathsinclude-confidence
(boolean) – include heuristic confidence scoringdetect-unused-jars
(boolean) – list jars on classpath not contributing beansmarkdown-summary
(boolean) – also emit a Markdown summary fileoutput-dir
(string) – output directory for persisted report (default:build/boot-usage
)policies.fail-on-violation
(boolean) – throw on first policy violation(Actuator exposure still controlled by normal
management.*
settings.)Actuator Endpoint
bootusage
/actuator/bootusage
force=true
bypasses cache.appliedAutoConfigurations
skippedAutoConfigurations
(with optional detail)starters
(declared
,used
,unused
)suggestions
(confidence, unusedJars, future policy slots)beanOrigins
(when enabled)policies
(violations, if any)metadata
(generation timestamp, version)Policy & Customization SPIs
UsagePolicy
to validate the generated report (return violations).UsageReportCustomizer
to mutate the structured map before exposure/persist.Failure Semantics
policies.fail-on-violation=true
, startup fails on first violation.detect-unused-jars=true
and (optionally) integrated policies deem unused jars unacceptable, it can contribute to violations.Persistence
enabled=true
, a JSON report is written onApplicationReadyEvent
.markdown-summary=true
.Security & Sanitization
Backward Compatibility
Tests Added
Limitations / Future Work
How to Try
Enable and expose:
Optional extras:
Reviewer Checklist
Notes
Snapshot dependency resolution flakiness may cause unrelated CI failures (infrastructure). Re-run if failures are only network/timeouts.