Skip to content
Discussion options

You must be logged in to vote

Honest answer: it finds silently-resolved cycles, not every theoretically possible one. Three cases:

  1. Crashing cycles (constructor↔constructor): the app dies with BeanCurrentlyInCreationException before WireDoctor can run — nothing to report, Spring already told you.
  2. Silently-resolved cycles (setter injection, proxies): ✅ this is WireDoctor's target. Tarjan SCC on the resolved graph (getDependenciesForBean()) finds cycles that succeed silently and reports them as structural design smells — plus lazySuggestions ranking which @Lazy breaks the most cycles with the smallest blast radius.
  3. Early-reference blindspot (allow-circular-references=true): cycles resolved via Spring's 3-level cache (ea…

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by ddsha441981
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant