B.2 Generating your own meta-data using the annotation processor
You can easily generate your own configuration meta-data file from items annotated with @ConfigurationProperties
by using thespring-boot-configuration-processor
jar. The jar includes a Java annotation processor which is invoked as your project is compiled. To use the processor, simply include spring-boot-configuration-processor
as an optional dependency, for example with Maven you would add:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
With Gradle, you can use the propdeps-plugin and specify:
dependencies {
optional "org.springframework.boot:spring-boot-configuration-processor"
}
compileJava.dependsOn(processResources)
}
You need to add |
The processor will pickup both classes and methods that are annotated with @ConfigurationProperties
. The Javadoc for field values within configuration classes will be used to populate the description
attribute.
You should only use simple text with |
Properties are discovered via the presence of standard getters and setters with special handling for collection types (that will be detected even if only a getter is present). The annotation processor also supports the use of the @Data
, @Getter
and @Setter
lombok annotations.
The annotation processor will automatically consider inner classes as nested properties. For example, the following class:
@ConfigurationProperties(prefix="server") public class ServerProperties { private String name; private Host host; // ... getter and setters private static class Host { private String ip; private int port; // ... getter and setters } }
Will produce meta-data information for server.name
, server.host.ip
and server.host.port
properties. You can use the @NestedConfigurationProperty
annotation on a field to indicate that a regular (non-inner) class should be treated as if it were nested.
Spring Boot’s configuration file handling is quite flexible; and it often the case that properties may exist that are not bound to a @ConfigurationProperties
bean. To support such cases, the annotation processor will automatically merge items from META-INF/additional-spring-configuration-metadata.json
into the main meta-data file.
The format of the additional-spring-configuration-metadata.json
file is exactly the same as the regular spring-configuration-metadata.json
. The additional properties file is optional, if you don’t have any additional properties, simply don’t add it.
http://docs.spring.io/spring-boot/docs/1.3.0.M1/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor