The dependencies of some of the beans in the application context form a cycle
Two or more Spring beans depend on each other through constructors, and Spring Boot 2.6+ forbids cycles by default.
form a cyclecircular reference Meaning
A → B → A cycles can’t be built with constructor injection. Spring prints the cycle; the fix is usually a design change.
Common causes
- Services injecting each other
- Configuration classes depending on beans they define
⚡ Quick fix
- Extract shared logic into a third bean
- Use events or interfaces to decouple
- As a last resort, @Lazy on one injection point
Detailed fix by platform
Java
public OrderService(@Lazy PaymentService payments) { … }
How to diagnose
- Cycle — Which beans are listed?
- Recent change — Did it start after a deploy, upgrade, or configuration change? Compare with the last working version.
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- DataSource url not specified Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
- HttpMessageNotReadableException HttpMessageNotReadableException: JSON parse error / Required request body is missing
- InvalidOperationException InvalidOperationException: Unable to resolve service for type 'X' while attempting to activate 'Y'
Most viewed in Java
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 13 Oct 2026