Annotation Interface NestedConfigurationProperty
@Target({FIELD,RECORD_COMPONENT,METHOD})
@Retention(RUNTIME)
@Documented
@Nested
public @interface NestedConfigurationProperty
Indicates that a property in a
@ConfigurationProperties
object should be treated as if it were a nested type. This annotation has no bearing on
the actual binding processes, but it is used by the
spring-boot-configuration-processor as a hint that a property is not bound as a
single value. When this is specified, a nested group is created for the property and
its type is harvested.
In the example below, Host is flagged as a nested property using its field and
an example.server.host nested group is created with any property that
Host defines:
@ConfigurationProperties("example.server")
class ServerProperties {
@NestedConfigurationProperty
private final Host host = new Host();
public Host getHost() { ... }
// Other properties, getter, setter.
}
The annotation can also be specified on a getter method. If you use records, you can annotate the record component.
This has no effect on collections and maps as these types are automatically identified.
Also, the annotation is not necessary if the target type is an inner class of the
@ConfigurationProperties object. In the example below,
Host is detected as a nested type as it is defined as an inner class:
@ConfigurationProperties("example.server")
class ServerProperties {
private final Host host = new Host();
public Host getHost() { ... }
// Other properties, getter, setter.
public static class Host {
// properties, getter, setter.
}
}- Since:
- 1.2.0
- Author:
- Stephane Nicoll, Phillip Webb, Jared Bates