Spring / Spring Boot
What does the spring annotation @ConditionalOnMissingBean used for?
The @ConditionalOnMissingBean annotation is a spring conditional annotation for registering beans only when they are not already in the application context.
@Bean @ConditionalOnMissingBean(SomeBean.class) public SomeBean otherBean(){ return new SomeBean(); }
The above bean will get loaded by Spring only if there is no other bean of this type present in the context. On the other hand, if there is already a bean of the type SomeBean present in the application context, the above bean will not be created.
Use cases:
Specifying a fallback bean which gets only loaded as backup/default if there is no bean of the same type present. The classical example would be using an in-memory database if there is no real database configured.
Specifying a default bean which allows being overridden in the case that a more specific bean of the same type is present in the context. One of the examples would be using a default authentication mechanism unless someone decides to replace it with his own custom authentication.
More Related questions...