In **Spring Boot**, Beans are objects managed by the **Spring IoC Container**.
Whenever Spring fails to:
- Create a bean
- Inject a dependency
- Initialize the context
- Resolve configuration
- Wire dependencies
It throws **Bean-related Exceptions**.
Understanding these exceptions is critical for:
- Debugging startup failures
- Fixing dependency injection issues
- Interview preparation
- Production troubleshooting
Bean exceptions typically occur during:
Application Startup Phase | vSpring Container Initialization | vBean Creation & Dependency InjectionIf anything fails in this chain → Application will NOT start.
Thrown when Spring fails to create a bean.
org.springframework.beans.factory.BeanCreationException- Constructor failure
- Exception inside @PostConstruct
- Invalid configuration
- Missing dependencies
- Circular dependencies
@Componentpublic class UserService { public UserService() { throw new RuntimeException("Failed during bean creation"); }}BeanCreationException: Error creating bean with name 'userService'- Database connection failure
- Invalid property value
- Misconfigured bean
Thrown when Spring cannot find a required bean in the container.
org.springframework.beans.factory.NoSuchBeanDefinitionException@Servicepublic class OrderService { @Autowired private PaymentService paymentService; // No bean defined!}If `PaymentService` is not annotated with `@Component`, `@Service`, or defined in config.
NoSuchBeanDefinitionException: No qualifying bean of type 'PaymentService'✔ Add annotation:
@Servicepublic class PaymentService {}✔ Or define bean manually:
@Configurationpublic class AppConfig { @Bean public PaymentService paymentService() { return new PaymentService(); }}Thrown when multiple beans of the same type exist and Spring doesn't know which one to inject.
@Servicepublic class PayPalService implements PaymentService {}@Servicepublic class StripeService implements PaymentService {}@Autowiredprivate PaymentService paymentService;NoUniqueBeanDefinitionException: expected single matching bean but found 2@Service@Primarypublic class PayPalService implements PaymentService {}@Autowired@Qualifier("stripeService")private PaymentService paymentService;Occurs due to circular dependencies.
@Componentpublic class A { @Autowired private B b;}@Componentpublic class B { @Autowired private A a;}BeanCurrentlyInCreationExceptionBean A ---> depends on ---> Bean B ^ | | v <------- depends on --------✔ Use constructor injection carefully
✔ Break circular dependency
✔ Use `@Lazy`
@Autowired@Lazyprivate B b;Thrown when Spring cannot satisfy a dependency required by a bean.
@Servicepublic class UserService { private final PaymentService paymentService; public UserService(PaymentService paymentService) { this.paymentService = paymentService; }}If `PaymentService` bean is missing.
UnsatisfiedDependencyExceptionOccurs when initialization logic fails (like @PostConstruct).
@Componentpublic class DataLoader { @PostConstruct public void init() { throw new RuntimeException("Init failed"); }}BeansException | ├── BeanCreationException | ├── BeanCurrentlyInCreationException | └── UnsatisfiedDependencyException | ├── NoSuchBeanDefinitionException | └── NoUniqueBeanDefinitionException | └── BeanInitializationExceptionAlways scroll to the **root cause**:
Caused by: java.lang.NullPointerExceptiondebug=trueAdd dependency:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>Endpoint:
/actuator/beans✔ Prefer constructor injection
✔ Avoid field injection
✔ Avoid circular dependencies
✔ Use @Qualifier when multiple beans exist
✔ Keep configuration clean
✔ Use @Primary wisely
✔ Validate properties using @ConfigurationProperties
1. Difference between `NoSuchBeanDefinitionException` and `NoUniqueBeanDefinitionException`?
2. How does Spring resolve circular dependencies?
3. Why is constructor injection preferred?
4. What causes BeanCreationException?
5. How to debug Spring startup failure?
Spring Bean exceptions mainly occur due to:
- Missing beans
- Multiple beans
- Circular dependencies
- Configuration errors
- Initialization failures
Mastering these helps you:
- Debug faster
- Build production-ready apps
- Crack Spring Boot interviews
- Handle real-world enterprise issues