1. Introduction to @ConditionalOnProperty
In Spring Boot, the @ConditionalOnProperty
annotation is used to conditionally enable or disable a bean registration based on the presence and value of a property in the application’s configuration files (like application.properties
or application.yml
).
It is part of the Spring Boot auto-configuration mechanism and is mainly used to write conditional logic in configuration classes.
2. Use Case
You can use @ConditionalOnProperty
when:
- You want to load a bean only if a specific property is set.
- You want to provide optional or toggleable features in your application.
- You are writing a custom auto-configuration class.
- You want to enable/disable components like metrics, schedulers, or data sources based on a config flag.
3. Basic Syntax
@ConditionalOnProperty( name = "feature.enabled", havingValue = "true", matchIfMissing = false )
This means:
- The bean will be registered only if the property
feature.enabled
is present and set totrue
. - If the property is missing and
matchIfMissing = false
, the bean will not be loaded.
4. Parameters Explained
Parameter | Type | Description |
name | String[] | The name(s) of the property to check. |
prefix | String | A prefix to apply to each property name. Useful when grouping properties. |
havingValue | String | The value that the property must have for the condition to match. |
matchIfMissing | boolean | Whether the condition should match if the property is missing. Default is false . |