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