Merge branch '2.1.x'

Closes gh-17603
pull/17611/head
Stephane Nicoll 5 years ago
commit a1f32bbd7a

@ -8733,16 +8733,55 @@ assume that you are creating a starter for "acme" and that you name the auto-con
module `acme-spring-boot-autoconfigure` and the starter `acme-spring-boot-starter`. If module `acme-spring-boot-autoconfigure` and the starter `acme-spring-boot-starter`. If
you only have one module that combines the two, name it `acme-spring-boot-starter`. you only have one module that combines the two, name it `acme-spring-boot-starter`.
Also, if your starter provides configuration keys, use a unique namespace for them. In
[[boot-features-custom-starter-configuration-keys]]
==== Configuration keys
If your starter provides configuration keys, use a unique namespace for them. In
particular, do not include your keys in the namespaces that Spring Boot uses (such as particular, do not include your keys in the namespaces that Spring Boot uses (such as
`server`, `management`, `spring`, and so on). If you use the same namespace, we may modify `server`, `management`, `spring`, and so on). If you use the same namespace, we may modify
these namespaces in the future in ways that break your modules. these namespaces in the future in ways that break your modules. As a rule of thumb,
prefix all your keys with a namespace that you own (e.g. `acme`).
Make sure that configuration keys are documented by adding field javadoc for each
property, as shown in the following example:
[source,java,indent=0]
----
@ConfigurationProperties("acme")
public class AcmeProperties {
/**
* Whether to check the location of acme resources.
*/
private boolean checkLocation = true;
/**
* Timeout for establishing a connection to the acme server.
*/
private Duration loginTimeout = Duration.ofSeconds(3);
// getters & setters
}
----
Here are some rules we follow internally to make sure descriptions are consistent:
* Do not start the description by "The" or "A".
* For `boolean` types, start the description with "Whether" or "Enable".
* For collection-based types, start the description with "Comma-separated list"
* Use `java.time.Duration` rather than `long` and describe the default unit if it differs
from milliseconds, e.g. "If a duration suffix is not specified, seconds will be used".
* Do not provide the default value in the description unless it has to be determined at
runtime.
Make sure to Make sure to
<<appendix.adoc#configuration-metadata-annotation-processor,trigger meta-data <<appendix.adoc#configuration-metadata-annotation-processor,trigger meta-data
generation>> so that IDE assistance is available for your keys as well. You may want to generation>> so that IDE assistance is available for your keys as well. You may want to
review the generated meta-data (`META-INF/spring-configuration-metadata.json`) to make review the generated metadata (`META-INF/spring-configuration-metadata.json`) to make
sure your keys are properly documented. sure your keys are properly documented. Using your own starter in a compatible IDE is
also a good idea to validate that quality of the metadata.

Loading…
Cancel
Save