You are currently viewing Spring Boot @ConditionalOn and @Bean Tutorial

Spring Boot @ConditionalOn and @Bean Tutorial

1. Introduction:

In Spring Boot, the @ConditionalOn annotation is used to conditionally enable or disable the creation of a bean based on certain conditions. Combined with the @Bean annotation, it allows for dynamic bean creation depending on the runtime environment or configuration.

2. Basic @ConditionalOnProperty:

The @ConditionalOnProperty annotation is one of the most commonly used conditions. It checks whether a specific property is present in the application’s configuration.


In this example, the MyConditionalBean will only be created if the property myapp.feature.enabled is set to true in the application properties.

3. @ConditionalOnClass and @ConditionalOnMissingClass:

The @ConditionalOnClass annotation checks for the presence of a specified class in the classpath, while @ConditionalOnMissingClass checks if the specified class is not present.


In this example, the WebController bean will only be created if the DispatcherServlet class is present in the classpath.

4. Custom Conditions with @Conditional:

You can create custom conditions by implementing the Condition interface and using the @Conditional annotation.


In this example, MyCustomCondition is a custom condition class implementing the Condition interface. The MyCustomBean will only be created if the condition specified in MyCustomCondition is met.

5. Combining Conditions:

You can combine multiple conditions using logical operators (&&, ||, !) with the @Conditional annotations.


In this example, the CombinedBean will only be created if both the property condition and the class condition are satisfied.

6. Conclusion:

@ConditionalOn annotations provide a powerful mechanism for conditionally creating beans in a Spring Boot application. This allows you to customize the application context based on various conditions, making your application more flexible and adaptive to different environments.

For a comprehensive understanding of conditions and their usage, refer to the official Spring Boot documentation: @Conditional annotations.

Feel free to experiment with different conditions and explore more advanced features provided by Spring Boot for conditional bean creation!

Leave a Reply