Document @ConfigurationPropertiesBinding should use static bean methods

Closes gh-45621
This commit is contained in:
Phillip Webb 2025-05-20 12:53:03 -07:00
parent 3e3aa5acbc
commit fa0107c431
2 changed files with 12 additions and 2 deletions

View File

@ -1137,9 +1137,15 @@ NOTE: The preceding merging rules apply to properties from all property sources,
Spring Boot attempts to coerce the external application properties to the right type when it binds to the javadoc:org.springframework.boot.context.properties.ConfigurationProperties[format=annotation] beans. Spring Boot attempts to coerce the external application properties to the right type when it binds to the javadoc:org.springframework.boot.context.properties.ConfigurationProperties[format=annotation] beans.
If you need custom type conversion, you can provide a javadoc:org.springframework.core.convert.ConversionService[] bean (with a bean named `conversionService`) or custom property editors (through a javadoc:org.springframework.beans.factory.config.CustomEditorConfigurer[] bean) or custom converters (with bean definitions annotated as javadoc:org.springframework.boot.context.properties.ConfigurationPropertiesBinding[format=annotation]). If you need custom type conversion, you can provide a javadoc:org.springframework.core.convert.ConversionService[] bean (with a bean named `conversionService`) or custom property editors (through a javadoc:org.springframework.beans.factory.config.CustomEditorConfigurer[] bean) or custom converters (with bean definitions annotated as javadoc:org.springframework.boot.context.properties.ConfigurationPropertiesBinding[format=annotation]).
NOTE: As this bean is requested very early during the application lifecycle, make sure to limit the dependencies that your javadoc:org.springframework.core.convert.ConversionService[] is using. [NOTE]
====
Beans used for property conversion are requested very early during the application lifecycle so make sure to limit the dependencies that your javadoc:org.springframework.core.convert.ConversionService[] is using.
Typically, any dependency that you require may not be fully initialized at creation time. Typically, any dependency that you require may not be fully initialized at creation time.
You may want to rename your custom javadoc:org.springframework.core.convert.ConversionService[] if it is not required for configuration keys coercion and only rely on custom converters qualified with javadoc:org.springframework.boot.context.properties.ConfigurationPropertiesBinding[format=annotation].
You should also declare any javadoc:org.springframework.boot.context.properties.ConfigurationProperties[format=annotation] beans using `static` methods to avoid "`bean is not eligible for getting processed by all BeanPostProcessors`" warnings.
====
TIP: You may want to rename your custom javadoc:org.springframework.core.convert.ConversionService[] if it is not required for configuration keys coercion and only rely on custom converters qualified with javadoc:org.springframework.boot.context.properties.ConfigurationPropertiesBinding[format=annotation].

View File

@ -37,6 +37,10 @@ import org.springframework.stereotype.Indexed;
* <p> * <p>
* Note that contrary to {@code @Value}, SpEL expressions are not evaluated since property * Note that contrary to {@code @Value}, SpEL expressions are not evaluated since property
* values are externalized. * values are externalized.
* <p>
* Static methods should be used when declaring {@code @ConfigurationProperties} beans to
* ensure that "bean is not eligible for getting processed by all BeanPostProcessors"
* warnings are not produced.
* *
* @author Dave Syer * @author Dave Syer
* @since 1.0.0 * @since 1.0.0