mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Merge pull request #29667 from mhalbritter
* gh-29667: Move appendix subsections under appendix section Closes gh-29667
This commit is contained in:
commit
43dc378adc
@ -90,7 +90,9 @@ class Snippets {
|
||||
|
||||
private Asciidoc getAsciidoc(Snippet snippet, Table table) {
|
||||
Asciidoc asciidoc = new Asciidoc();
|
||||
asciidoc.appendln("[[" + snippet.getAnchor() + "]]");
|
||||
// We have to prepend 'appendix.' as a section id here, otherwise the
|
||||
// spring-asciidoctor-extensions:section-id asciidoctor extension complains
|
||||
asciidoc.appendln("[[appendix." + snippet.getAnchor() + "]]");
|
||||
asciidoc.appendln("== ", snippet.getTitle());
|
||||
table.write(asciidoc);
|
||||
return asciidoc;
|
||||
|
@ -703,78 +703,147 @@ howto-convert-an-existing-application-to-spring-boot=howto.traditional-deploymen
|
||||
howto-weblogic=howto.traditional-deployment.weblogic
|
||||
howto-use-jedis-instead-of-lettuce=howto.nosql.jedis-instead-of-lettuce
|
||||
howto-testcontainers=howto.testing.testcontainers
|
||||
common-application-properties=application-properties
|
||||
common-application-properties-core=application-properties.core
|
||||
common-application-properties-cache=application-properties.cache
|
||||
common-application-properties-mail=application-properties.mail
|
||||
common-application-properties-json=application-properties.json
|
||||
common-application-properties-data=application-properties.data
|
||||
common-application-properties-transaction=application-properties.transaction
|
||||
common-application-properties-data-migration=application-properties.data-migration
|
||||
common-application-properties-integration=application-properties.integration
|
||||
common-application-properties-web=application-properties.web
|
||||
common-application-properties-templating=application-properties.templating
|
||||
common-application-properties-server=application-properties.server
|
||||
common-application-properties-security=application-properties.security
|
||||
common-application-properties-rsocket=application-properties.rsocket
|
||||
common-application-properties-actuator=application-properties.actuator
|
||||
common-application-properties-devtools=application-properties.devtools
|
||||
common-application-properties-testing=application-properties.testing
|
||||
configuration-metadata=configuration-metadata
|
||||
configuration-metadata-format=configuration-metadata.format
|
||||
configuration-metadata-group-attributes=configuration-metadata.format.group
|
||||
configuration-metadata-property-attributes=configuration-metadata.format.property
|
||||
configuration-metadata-hints-attributes=configuration-metadata.format.hints
|
||||
configuration-metadata-repeated-items=configuration-metadata.format.repeated-items
|
||||
configuration-metadata-providing-manual-hints=configuration-metadata.manual-hints
|
||||
configuration-metadata-providing-manual-hints-value-hint=configuration-metadata.manual-hints.value-hint
|
||||
configuration-metadata-providing-manual-hints-value-providers=configuration-metadata.manual-hints.value-providers
|
||||
configuration-metadata-providing-manual-hints-any=configuration-metadata.manual-hints.value-providers.any
|
||||
configuration-metadata-providing-manual-hints-class-reference=configuration-metadata.manual-hints.value-providers.class-reference
|
||||
configuration-metadata-providing-manual-hints-handle-as=configuration-metadata.manual-hints.value-providers.handle-as
|
||||
configuration-metadata-providing-manual-hints-logger-name=configuration-metadata.manual-hints.value-providers.logger-name
|
||||
configuration-metadata-providing-manual-hints-spring-bean-reference=configuration-metadata.manual-hints.value-providers.spring-bean-reference
|
||||
configuration-metadata-providing-manual-hints-spring-profile-name=configuration-metadata.manual-hints.value-providers.spring-profile-name
|
||||
configuration-metadata-annotation-processor=configuration-metadata.annotation-processor
|
||||
configuration-metadata-annotation-processor-setup=configuration-metadata.annotation-processor.configuring
|
||||
configuration-metadata-annotation-processor-metadata-generation=configuration-metadata.annotation-processor.automatic-metadata-generation
|
||||
configuration-metadata-annotation-processor-metadata-generation-nested=configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties
|
||||
configuration-metadata-additional-metadata=configuration-metadata.annotation-processor.adding-additional-metadata
|
||||
auto-configuration-classes=auto-configuration-classes
|
||||
auto-configuration-classes-from-autoconfigure-module=auto-configuration-classes.core
|
||||
auto-configuration-classes-from-actuator=auto-configuration-classes.actuator
|
||||
test-auto-configuration=test-auto-configuration
|
||||
test-auto-configuration-slices=test-auto-configuration.slices
|
||||
executable-jar=executable-jar
|
||||
executable-jar-nested-jars=executable-jar.nested-jars
|
||||
executable-jar-jar-file-structure=executable-jar.nested-jars.jar-structure
|
||||
executable-jar-war-file-structure=executable-jar.nested-jars.war-structure
|
||||
executable-jar-war-index-files=executable-jar.nested-jars.index-files
|
||||
executable-jar-war-index-files-classpath=executable-jar.nested-jars.classpath-index
|
||||
executable-jar-war-index-files-layers=executable-jar.nested-jars.layer-index
|
||||
executable-jar-jarfile=executable-jar.jarfile-class
|
||||
executable-jar-jarfile-compatibility=executable-jar.jarfile-class.compatibility
|
||||
executable-jar-launching=executable-jar.launching
|
||||
executable-jar-launcher-manifest=executable-jar.launching.manifest
|
||||
executable-jar-property-launcher-features=executable-jar.property-launcher
|
||||
executable-jar-restrictions=executable-jar.restrictions
|
||||
executable-jar-alternatives=executable-jar.alternatives
|
||||
dependency-versions=dependency-versions
|
||||
dependency-versions-coordinates=dependency-versions.coordinates
|
||||
dependency-versions-properties=dependency-versions.properties
|
||||
core-properties=application-properties.core
|
||||
cache-properties=application-properties.cache
|
||||
mail-properties=application-properties.mail
|
||||
json-properties=application-properties.json
|
||||
data-properties=application-properties.data
|
||||
transaction-properties=application-properties.transaction
|
||||
data-migration-properties=application-properties.data-migration
|
||||
integration-properties=application-properties.integration
|
||||
web-properties=application-properties.web
|
||||
templating-properties=application-properties.templating
|
||||
server-properties=application-properties.server
|
||||
security-properties=application-properties.security
|
||||
rsocket-properties=application-properties.rsocket
|
||||
actuator-properties=application-properties.actuator
|
||||
devtools-properties=application-properties.devtools
|
||||
testing-properties=application-properties.testing
|
||||
|
||||
# Appendix restructuring, see gh-27003
|
||||
common-application-properties=appendix.application-properties
|
||||
common-application-properties-core=appendix.application-properties.core
|
||||
common-application-properties-cache=appendix.application-properties.cache
|
||||
common-application-properties-mail=appendix.application-properties.mail
|
||||
common-application-properties-json=appendix.application-properties.json
|
||||
common-application-properties-data=appendix.application-properties.data
|
||||
common-application-properties-transaction=appendix.application-properties.transaction
|
||||
common-application-properties-data-migration=appendix.application-properties.data-migration
|
||||
common-application-properties-integration=appendix.application-properties.integration
|
||||
common-application-properties-web=appendix.application-properties.web
|
||||
common-application-properties-templating=appendix.application-properties.templating
|
||||
common-application-properties-server=appendix.application-properties.server
|
||||
common-application-properties-security=appendix.application-properties.security
|
||||
common-application-properties-rsocket=appendix.application-properties.rsocket
|
||||
common-application-properties-actuator=appendix.application-properties.actuator
|
||||
common-application-properties-devtools=appendix.application-properties.devtools
|
||||
common-application-properties-testing=appendix.application-properties.testing
|
||||
|
||||
application-properties=appendix.application-properties
|
||||
application-properties.core=appendix.application-properties.core
|
||||
application-properties.cache=appendix.application-properties.cache
|
||||
application-properties.mail=appendix.application-properties.mail
|
||||
application-properties.json=appendix.application-properties.json
|
||||
application-properties.data=appendix.application-properties.data
|
||||
application-properties.transaction=appendix.application-properties.transaction
|
||||
application-properties.data-migration=appendix.application-properties.data-migration
|
||||
application-properties.integration=appendix.application-properties.integration
|
||||
application-properties.web=appendix.application-properties.web
|
||||
application-properties.templating=appendix.application-properties.templating
|
||||
application-properties.server=appendix.application-properties.server
|
||||
application-properties.security=appendix.application-properties.security
|
||||
application-properties.rsocket=appendix.application-properties.rsocket
|
||||
application-properties.actuator=appendix.application-properties.actuator
|
||||
application-properties.devtools=appendix.application-properties.devtools
|
||||
application-properties.testing=appendix.application-properties.testing
|
||||
|
||||
core-properties=appendix.application-properties.core
|
||||
cache-properties=appendix.application-properties.cache
|
||||
mail-properties=appendix.application-properties.mail
|
||||
json-properties=appendix.application-properties.json
|
||||
data-properties=appendix.application-properties.data
|
||||
transaction-properties=appendix.application-properties.transaction
|
||||
data-migration-properties=appendix.application-properties.data-migration
|
||||
integration-properties=appendix.application-properties.integration
|
||||
web-properties=appendix.application-properties.web
|
||||
templating-properties=appendix.application-properties.templating
|
||||
server-properties=appendix.application-properties.server
|
||||
security-properties=appendix.application-properties.security
|
||||
rsocket-properties=appendix.application-properties.rsocket
|
||||
actuator-properties=appendix.application-properties.actuator
|
||||
devtools-properties=appendix.application-properties.devtools
|
||||
testing-properties=appendix.application-properties.testing
|
||||
|
||||
configuration-metadata=appendix.configuration-metadata
|
||||
configuration-metadata-format=appendix.configuration-metadata.format
|
||||
configuration-metadata-group-attributes=appendix.configuration-metadata.format.group
|
||||
configuration-metadata-property-attributes=appendix.configuration-metadata.format.property
|
||||
configuration-metadata-hints-attributes=appendix.configuration-metadata.format.hints
|
||||
configuration-metadata-repeated-items=appendix.configuration-metadata.format.repeated-items
|
||||
configuration-metadata-providing-manual-hints=appendix.configuration-metadata.manual-hints
|
||||
configuration-metadata-providing-manual-hints-value-hint=appendix.configuration-metadata.manual-hints.value-hint
|
||||
configuration-metadata-providing-manual-hints-value-providers=appendix.configuration-metadata.manual-hints.value-providers
|
||||
configuration-metadata-providing-manual-hints-any=appendix.configuration-metadata.manual-hints.value-providers.any
|
||||
configuration-metadata-providing-manual-hints-class-reference=appendix.configuration-metadata.manual-hints.value-providers.class-reference
|
||||
configuration-metadata-providing-manual-hints-handle-as=appendix.configuration-metadata.manual-hints.value-providers.handle-as
|
||||
configuration-metadata-providing-manual-hints-logger-name=appendix.configuration-metadata.manual-hints.value-providers.logger-name
|
||||
configuration-metadata-providing-manual-hints-spring-bean-reference=appendix.configuration-metadata.manual-hints.value-providers.spring-bean-reference
|
||||
configuration-metadata-providing-manual-hints-spring-profile-name=appendix.configuration-metadata.manual-hints.value-providers.spring-profile-name
|
||||
configuration-metadata-annotation-processor=appendix.configuration-metadata.annotation-processor
|
||||
configuration-metadata-annotation-processor-setup=appendix.configuration-metadata.annotation-processor.configuring
|
||||
configuration-metadata-annotation-processor-metadata-generation=appendix.configuration-metadata.annotation-processor.automatic-metadata-generation
|
||||
configuration-metadata-annotation-processor-metadata-generation-nested=appendix.configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties
|
||||
configuration-metadata-additional-metadata=appendix.configuration-metadata.annotation-processor.adding-additional-metadata
|
||||
|
||||
configuration-metadata.format=appendix.configuration-metadata.format
|
||||
configuration-metadata.format.group=appendix.configuration-metadata.format.group
|
||||
configuration-metadata.format.property=appendix.configuration-metadata.format.property
|
||||
configuration-metadata.format.hints=appendix.configuration-metadata.format.hints
|
||||
configuration-metadata.format.repeated-items=appendix.configuration-metadata.format.repeated-items
|
||||
configuration-metadata.manual-hints=appendix.configuration-metadata.manual-hints
|
||||
configuration-metadata.manual-hints.value-hint=appendix.configuration-metadata.manual-hints.value-hint
|
||||
configuration-metadata.manual-hints.value-providers=appendix.configuration-metadata.manual-hints.value-providers
|
||||
configuration-metadata.manual-hints.value-providers.any=appendix.configuration-metadata.manual-hints.value-providers.any
|
||||
configuration-metadata.manual-hints.value-providers.class-reference=appendix.configuration-metadata.manual-hints.value-providers.class-reference
|
||||
configuration-metadata.manual-hints.value-providers.handle-as=appendix.configuration-metadata.manual-hints.value-providers.handle-as
|
||||
configuration-metadata.manual-hints.value-providers.logger-name=appendix.configuration-metadata.manual-hints.value-providers.logger-name
|
||||
configuration-metadata.manual-hints.value-providers.spring-bean-reference=appendix.configuration-metadata.manual-hints.value-providers.spring-bean-reference
|
||||
configuration-metadata.manual-hints.value-providers.spring-profile-name=appendix.configuration-metadata.manual-hints.value-providers.spring-profile-name
|
||||
configuration-metadata.annotation-processor=appendix.configuration-metadata.annotation-processor
|
||||
configuration-metadata.annotation-processor.configuring=appendix.configuration-metadata.annotation-processor.configuring
|
||||
configuration-metadata.annotation-processor.automatic-metadata-generation=appendix.configuration-metadata.annotation-processor.automatic-metadata-generation
|
||||
configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties=appendix.configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties
|
||||
configuration-metadata.annotation-processor.adding-additional-metadata=appendix.configuration-metadata.annotation-processor.adding-additional-metadata
|
||||
|
||||
auto-configuration-classes=appendix.auto-configuration-classes
|
||||
auto-configuration-classes-from-autoconfigure-module=appendix.auto-configuration-classes.core
|
||||
auto-configuration-classes-from-actuator=appendix.auto-configuration-classes.actuator
|
||||
|
||||
auto-configuration-classes.core=appendix.auto-configuration-classes.core
|
||||
auto-configuration-classes.actuator=appendix.auto-configuration-classes.actuator
|
||||
|
||||
test-auto-configuration=appendix.test-auto-configuration
|
||||
test-auto-configuration-slices=appendix.test-auto-configuration.slices
|
||||
|
||||
test-auto-configuration.slices=appendix.test-auto-configuration.slices
|
||||
|
||||
executable-jar=appendix.executable-jar
|
||||
executable-jar-nested-jars=appendix.executable-jar.nested-jars
|
||||
executable-jar-jar-file-structure=appendix.executable-jar.nested-jars.jar-structure
|
||||
executable-jar-war-file-structure=appendix.executable-jar.nested-jars.war-structure
|
||||
executable-jar-war-index-files=appendix.executable-jar.nested-jars.index-files
|
||||
executable-jar-war-index-files-classpath=appendix.executable-jar.nested-jars.classpath-index
|
||||
executable-jar-war-index-files-layers=appendix.executable-jar.nested-jars.layer-index
|
||||
executable-jar-jarfile=appendix.executable-jar.jarfile-class
|
||||
executable-jar-jarfile-compatibility=appendix.executable-jar.jarfile-class.compatibility
|
||||
executable-jar-launching=appendix.executable-jar.launching
|
||||
executable-jar-launcher-manifest=appendix.executable-jar.launching.manifest
|
||||
executable-jar-property-launcher-features=appendix.executable-jar.property-launcher
|
||||
executable-jar-restrictions=appendix.executable-jar.restrictions
|
||||
executable-jar-alternatives=appendix.executable-jar.alternatives
|
||||
|
||||
executable-jar.nested-jars=appendix.executable-jar.nested-jars
|
||||
executable-jar.nested-jars.jar-structure=appendix.executable-jar.nested-jars.jar-structure
|
||||
executable-jar.nested-jars.war-structure=appendix.executable-jar.nested-jars.war-structure
|
||||
executable-jar.nested-jars.index-files=appendix.executable-jar.nested-jars.index-files
|
||||
executable-jar.nested-jars.classpath-index=appendix.executable-jar.nested-jars.classpath-index
|
||||
executable-jar.nested-jars.layer-index=appendix.executable-jar.nested-jars.layer-index
|
||||
executable-jar.jarfile-class=appendix.executable-jar.jarfile-class
|
||||
executable-jar.jarfile-class.compatibility=appendix.executable-jar.jarfile-class.compatibility
|
||||
executable-jar.launching=appendix.executable-jar.launching
|
||||
executable-jar.launching.manifest=appendix.executable-jar.launching.manifest
|
||||
executable-jar.property-launcher=appendix.executable-jar.property-launcher
|
||||
executable-jar.restrictions=appendix.executable-jar.restrictions
|
||||
executable-jar.alternatives=appendix.executable-jar.alternatives
|
||||
|
||||
dependency-versions=appendix.dependency-versions
|
||||
dependency-versions-coordinates=appendix.dependency-versions.coordinates
|
||||
dependency-versions-properties=appendix.dependency-versions.properties
|
||||
|
||||
dependency-versions.coordinates=appendix.dependency-versions.coordinates
|
||||
dependency-versions.properties=appendix.dependency-versions.properties
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[application-properties]]
|
||||
[[appendix.application-properties]]
|
||||
= Common Application Properties
|
||||
include::attributes.adoc[]
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[auto-configuration-classes]]
|
||||
[[appendix.auto-configuration-classes]]
|
||||
= Auto-configuration Classes
|
||||
include::attributes.adoc[]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[auto-configuration-classes.actuator]]
|
||||
[[appendix.auto-configuration-classes.actuator]]
|
||||
== spring-boot-actuator-autoconfigure
|
||||
The following auto-configuration classes are from the `spring-boot-actuator-autoconfigure` module:
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[auto-configuration-classes.core]]
|
||||
[[appendix.auto-configuration-classes.core]]
|
||||
== spring-boot-autoconfigure
|
||||
The following auto-configuration classes are from the `spring-boot-autoconfigure` module:
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
[[build-tool-plugins.other-build-systems]]
|
||||
== Supporting Other Build Systems
|
||||
If you want to use a build tool other than Maven, Gradle, or Ant, you likely need to develop your own plugin.
|
||||
Executable jars need to follow a specific format and certain entries need to be written in an uncompressed form (see the "`<<executable-jar#executable-jar, executable jar format>>`" section in the appendix for details).
|
||||
Executable jars need to follow a specific format and certain entries need to be written in an uncompressed form (see the "`<<executable-jar#appendix.executable-jar, executable jar format>>`" section in the appendix for details).
|
||||
|
||||
The Spring Boot Maven and Gradle plugins both make use of `spring-boot-loader-tools` to actually generate jars.
|
||||
If you need to, you may use this library directly.
|
||||
|
@ -1,6 +1,6 @@
|
||||
[[build-tool-plugins.whats-next]]
|
||||
== What to Read Next
|
||||
If you are interested in how the build tool plugins work, you can look at the {spring-boot-code}/spring-boot-project/spring-boot-tools[`spring-boot-tools`] module on GitHub.
|
||||
More technical details of the executable jar format are covered in <<executable-jar#executable-jar,the appendix>>.
|
||||
More technical details of the executable jar format are covered in <<executable-jar#appendix.executable-jar,the appendix>>.
|
||||
|
||||
If you have specific build-related questions, you can check out the "`<<howto#howto, how-to>>`" guides.
|
||||
|
@ -146,7 +146,7 @@ Doing so consults Spring Boot's default dependency metadata to deduce the artifa
|
||||
|
||||
NOTE: The default metadata is tied to the version of the CLI that you use.
|
||||
It changes only when you move to a new version of the CLI, putting you in control of when the versions of your dependencies may change.
|
||||
A table showing the dependencies and their versions that are included in the default metadata can be found in the <<dependency-versions#dependency-versions,appendix>>.
|
||||
A table showing the dependencies and their versions that are included in the default metadata can be found in the <<dependency-versions#appendix.dependency-versions,appendix>>.
|
||||
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[configuration-metadata]]
|
||||
[[appendix.configuration-metadata]]
|
||||
= Configuration Metadata
|
||||
include::attributes.adoc[]
|
||||
|
||||
@ -9,7 +9,7 @@ Spring Boot jars include metadata files that provide details of all supported co
|
||||
The files are designed to let IDE developers offer contextual help and "`code completion`" as users are working with `application.properties` or `application.yml` files.
|
||||
|
||||
The majority of the metadata file is generated automatically at compile time by processing all items annotated with `@ConfigurationProperties`.
|
||||
However, it is possible to <<configuration-metadata#configuration-metadata.annotation-processor.adding-additional-metadata,write part of the metadata manually>> for corner cases or more advanced use cases.
|
||||
However, it is possible to <<configuration-metadata#appendix.configuration-metadata.annotation-processor.adding-additional-metadata,write part of the metadata manually>> for corner cases or more advanced use cases.
|
||||
|
||||
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
[[configuration-metadata.annotation-processor]]
|
||||
[[appendix.configuration-metadata.annotation-processor]]
|
||||
== Generating Your Own Metadata by Using the Annotation Processor
|
||||
You can easily generate your own configuration metadata file from items annotated with `@ConfigurationProperties` by using the `spring-boot-configuration-processor` jar.
|
||||
The jar includes a Java annotation processor which is invoked as your project is compiled.
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.annotation-processor.configuring]]
|
||||
[[appendix.configuration-metadata.annotation-processor.configuring]]
|
||||
=== Configuring the Annotation Processor
|
||||
To use the processor, include a dependency on `spring-boot-configuration-processor`.
|
||||
|
||||
@ -59,7 +59,7 @@ You could also let the AspectJ plugin run all the processing and disable annotat
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.annotation-processor.automatic-metadata-generation]]
|
||||
[[appendix.configuration-metadata.annotation-processor.automatic-metadata-generation]]
|
||||
=== Automatic Metadata Generation
|
||||
The processor picks up both classes and methods that are annotated with `@ConfigurationProperties`.
|
||||
|
||||
@ -83,7 +83,7 @@ The annotation processor applies a number of heuristics to extract the default v
|
||||
Default values have to be provided statically. In particular, do not refer to a constant defined in another class.
|
||||
Also, the annotation processor cannot auto-detect default values for ``Enum``s and ``Collections``s.
|
||||
|
||||
For cases where the default value could not be detected, <<configuration-metadata#configuration-metadata.annotation-processor.adding-additional-metadata,manual metadata>> should be provided.
|
||||
For cases where the default value could not be detected, <<configuration-metadata#appendix.configuration-metadata.annotation-processor.adding-additional-metadata,manual metadata>> should be provided.
|
||||
Consider the following example:
|
||||
|
||||
[source,java,indent=0,subs="verbatim"]
|
||||
@ -91,7 +91,7 @@ Consider the following example:
|
||||
include::{docs-java}/configurationmetadata/annotationprocessor/automaticmetadatageneration/MyMessagingProperties.java[]
|
||||
----
|
||||
|
||||
In order to document default values for properties in the class above, you could add the following content to <<configuration-metadata#configuration-metadata.annotation-processor.adding-additional-metadata,the manual metadata of the module>>:
|
||||
In order to document default values for properties in the class above, you could add the following content to <<configuration-metadata#appendix.configuration-metadata.annotation-processor.adding-additional-metadata,the manual metadata of the module>>:
|
||||
|
||||
[source,json,indent=0,subs="verbatim"]
|
||||
----
|
||||
@ -111,7 +111,7 @@ NOTE: Only the `name` of the property is required to document additional metadat
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties]]
|
||||
[[appendix.configuration-metadata.annotation-processor.automatic-metadata-generation.nested-properties]]
|
||||
==== Nested Properties
|
||||
The annotation processor automatically considers inner classes as nested properties.
|
||||
Rather than documenting the `ip` and `port` at the root of the namespace, we could create a sub-namespace for it.
|
||||
@ -129,7 +129,7 @@ TIP: This has no effect on collections and maps, as those types are automaticall
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.annotation-processor.adding-additional-metadata]]
|
||||
[[appendix.configuration-metadata.annotation-processor.adding-additional-metadata]]
|
||||
=== Adding Additional Metadata
|
||||
Spring Boot's configuration file handling is quite flexible, and it is often the case that properties may exist that are not bound to a `@ConfigurationProperties` bean.
|
||||
You may also need to tune some attributes of an existing key.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[configuration-metadata.format]]
|
||||
[[appendix.configuration-metadata.format]]
|
||||
== Metadata Format
|
||||
Configuration metadata files are located inside jars under `META-INF/spring-configuration-metadata.json`.
|
||||
They use a JSON format with items categorized under either "`groups`" or "`properties`" and additional values hints categorized under "hints", as shown in the following example:
|
||||
@ -86,7 +86,7 @@ For example, when a developer is configuring the configprop:spring.jpa.hibernate
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.format.group]]
|
||||
[[appendix.configuration-metadata.format.group]]
|
||||
=== Group Attributes
|
||||
The JSON object contained in the `groups` array can contain the attributes shown in the following table:
|
||||
|
||||
@ -127,7 +127,7 @@ The JSON object contained in the `groups` array can contain the attributes shown
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.format.property]]
|
||||
[[appendix.configuration-metadata.format.property]]
|
||||
=== Property Attributes
|
||||
The JSON object contained in the `properties` array can contain the attributes described in the following table:
|
||||
|
||||
@ -223,7 +223,7 @@ Doing so is particularly useful when a `replacement` is provided.
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.format.hints]]
|
||||
[[appendix.configuration-metadata.format.hints]]
|
||||
=== Hint Attributes
|
||||
The JSON object contained in the `hints` array can contain the attributes shown in the following table:
|
||||
|
||||
@ -286,7 +286,7 @@ The JSON object contained in the `providers` attribute of each `hint` element ca
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.format.repeated-items]]
|
||||
[[appendix.configuration-metadata.format.repeated-items]]
|
||||
=== Repeated Metadata Items
|
||||
Objects with the same "`property`" and "`group`" name can appear multiple times within a metadata file.
|
||||
For example, you could bind two separate classes to the same prefix, with each having potentially overlapping property names.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[configuration-metadata.manual-hints]]
|
||||
[[appendix.configuration-metadata.manual-hints]]
|
||||
== Providing Manual Hints
|
||||
To improve the user experience and further assist the user in configuring a given property, you can provide additional metadata that:
|
||||
|
||||
@ -7,10 +7,10 @@ To improve the user experience and further assist the user in configuring a give
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-hint]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-hint]]
|
||||
=== Value Hint
|
||||
The `name` attribute of each hint refers to the `name` of a property.
|
||||
In the <<configuration-metadata#configuration-metadata.format,initial example shown earlier>>, we provide five values for the `spring.jpa.hibernate.ddl-auto` property: `none`, `validate`, `update`, `create`, and `create-drop`.
|
||||
In the <<configuration-metadata#appendix.configuration-metadata.format,initial example shown earlier>>, we provide five values for the `spring.jpa.hibernate.ddl-auto` property: `none`, `validate`, `update`, `create`, and `create-drop`.
|
||||
Each value may have a description as well.
|
||||
|
||||
If your property is of type `Map`, you can provide hints for both the keys and the values (but not for the map itself).
|
||||
@ -24,7 +24,7 @@ include::{docs-java}/configurationmetadata/manualhints/valuehint/MyProperties.ja
|
||||
----
|
||||
|
||||
The magic values are (in this example) are `sample1` and `sample2`.
|
||||
In order to offer additional content assistance for the keys, you could add the following JSON to <<configuration-metadata#configuration-metadata.annotation-processor.adding-additional-metadata,the manual metadata of the module>>:
|
||||
In order to offer additional content assistance for the keys, you could add the following JSON to <<configuration-metadata#appendix.configuration-metadata.annotation-processor.adding-additional-metadata,the manual metadata of the module>>:
|
||||
|
||||
[source,json,indent=0,subs="verbatim"]
|
||||
----
|
||||
@ -48,7 +48,7 @@ If your IDE supports it, this is by far the most effective approach to auto-comp
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers]]
|
||||
=== Value Providers
|
||||
Providers are a powerful way to attach semantics to a property.
|
||||
In this section, we define the official providers that you can use for your own hints.
|
||||
@ -92,7 +92,7 @@ If no provider for a given property is supported, no special content assistance
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.any]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.any]]
|
||||
==== Any
|
||||
The special **any** provider value permits any additional values to be provided.
|
||||
Regular value validation based on the property type should be applied if this is supported.
|
||||
@ -127,7 +127,7 @@ Note that, in the preceding example, any other value is also allowed.
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.class-reference]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.class-reference]]
|
||||
==== Class Reference
|
||||
The **class-reference** provider auto-completes classes available in the project.
|
||||
This provider supports the following parameters:
|
||||
@ -171,7 +171,7 @@ The following metadata snippet corresponds to the standard `server.servlet.jsp.c
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.handle-as]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.handle-as]]
|
||||
==== Handle As
|
||||
The **handle-as** provider lets you substitute the type of the property to a more high-level type.
|
||||
This typically happens when the property has a `java.lang.String` type, because you do not want your configuration classes to rely on classes that may not be on the classpath.
|
||||
@ -221,7 +221,7 @@ It is actually used internally as a `org.springframework.core.io.Resource` but c
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.logger-name]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.logger-name]]
|
||||
==== Logger Name
|
||||
The **logger-name** provider auto-completes valid logger names and <<features#features.logging.log-groups,logger groups>>.
|
||||
Typically, package and class names available in the current project can be auto-completed.
|
||||
@ -308,7 +308,7 @@ As Spring Boot defines a few logger groups out-of-the-box, dedicated value hints
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.spring-bean-reference]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.spring-bean-reference]]
|
||||
==== Spring Bean Reference
|
||||
The **spring-bean-reference** provider auto-completes the beans that are defined in the configuration of the current project.
|
||||
This provider supports the following parameters:
|
||||
@ -348,7 +348,7 @@ If you provide that hint, you still need to transform the bean name into an actu
|
||||
|
||||
|
||||
|
||||
[[configuration-metadata.manual-hints.value-providers.spring-profile-name]]
|
||||
[[appendix.configuration-metadata.manual-hints.value-providers.spring-profile-name]]
|
||||
==== Spring Profile Name
|
||||
The **spring-profile-name** provider auto-completes the Spring profiles that are defined in the configuration of the current project.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[dependency-versions]]
|
||||
[[appendix.dependency-versions]]
|
||||
= Dependency Versions
|
||||
include::attributes.adoc[]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[dependency-versions.coordinates]]
|
||||
[[appendix.dependency-versions.coordinates]]
|
||||
== Managed Dependency Coordinates
|
||||
|
||||
The following table provides details of all of the dependency versions that are provided by Spring Boot in its CLI (Command Line Interface), Maven dependency management, and Gradle plugin.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[dependency-versions.properties]]
|
||||
[[appendix.dependency-versions.properties]]
|
||||
== Version Properties
|
||||
|
||||
The following table provides all properties that can be used to override the versions managed by Spring Boot.
|
||||
|
@ -4,4 +4,4 @@ Finally, we have a few topics for more advanced users:
|
||||
|
||||
* *Spring Boot Applications Deployment:* <<deployment#deployment.cloud, Cloud Deployment>> | <<deployment#deployment.installing.nix-services, OS Service>>
|
||||
* *Build tool plugins:* <<build-tool-plugins#build-tool-plugins.maven, Maven>> | <<build-tool-plugins#build-tool-plugins.gradle, Gradle>>
|
||||
* *Appendix:* <<application-properties#application-properties,Application Properties>> | <<configuration-metadata#configuration-metadata,Configuration Metadata>> | <<auto-configuration-classes#auto-configuration-classes,Auto-configuration Classes>> | <<test-auto-configuration#test-auto-configuration,Test Auto-configuration Annotations>> | <<executable-jar#executable-jar,Executable Jars>> | <<dependency-versions#dependency-versions,Dependency Versions>>
|
||||
* *Appendix:* <<application-properties#appendix.application-properties,Application Properties>> | <<configuration-metadata#appendix.configuration-metadata,Configuration Metadata>> | <<auto-configuration-classes#appendix.auto-configuration-classes,Auto-configuration Classes>> | <<test-auto-configuration#appendix.test-auto-configuration,Test Auto-configuration Annotations>> | <<executable-jar#appendix.executable-jar,Executable Jars>> | <<dependency-versions#appendix.dependency-versions,Dependency Versions>>
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[executable-jar]]
|
||||
[[appendix.executable-jar]]
|
||||
= The Executable Jar Format
|
||||
include::attributes.adoc[]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[executable-jar.alternatives]]
|
||||
[[appendix.executable-jar.alternatives]]
|
||||
== Alternative Single Jar Solutions
|
||||
If the preceding restrictions mean that you cannot use Spring Boot Loader, consider the following alternatives:
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[executable-jar.jarfile-class]]
|
||||
[[appendix.executable-jar.jarfile-class]]
|
||||
== Spring Boot's "`JarFile`" Class
|
||||
The core class used to support loading nested jars is `org.springframework.boot.loader.jar.JarFile`.
|
||||
It lets you load jar content from a standard jar file or from nested child jar data.
|
||||
@ -25,7 +25,7 @@ We do not need to unpack the archive, and we do not need to read all entry data
|
||||
|
||||
|
||||
|
||||
[[executable-jar.jarfile-class.compatibility]]
|
||||
[[appendix.executable-jar.jarfile-class.compatibility]]
|
||||
=== Compatibility with the Standard Java "`JarFile`"
|
||||
Spring Boot Loader strives to remain compatible with existing code and libraries.
|
||||
`org.springframework.boot.loader.jar.JarFile` extends from `java.util.jar.JarFile` and should work as a drop-in replacement.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[executable-jar.launching]]
|
||||
[[appendix.executable-jar.launching]]
|
||||
== Launching Executable Jars
|
||||
The `org.springframework.boot.loader.Launcher` class is a special bootstrap class that is used as an executable jar's main entry point.
|
||||
It is the actual `Main-Class` in your jar file, and it is used to setup an appropriate `URLClassLoader` and ultimately call your `main()` method.
|
||||
@ -13,7 +13,7 @@ You can add additional locations by setting an environment variable called `LOAD
|
||||
|
||||
|
||||
|
||||
[[executable-jar.launching.manifest]]
|
||||
[[appendix.executable-jar.launching.manifest]]
|
||||
=== Launcher Manifest
|
||||
You need to specify an appropriate `Launcher` as the `Main-Class` attribute of `META-INF/MANIFEST.MF`.
|
||||
The actual class that you want to launch (that is, the class that contains a `main` method) should be specified in the `Start-Class` attribute.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[executable-jar.nested-jars]]
|
||||
[[appendix.executable-jar.nested-jars]]
|
||||
== Nested JARs
|
||||
Java does not provide any standard way to load nested jar files (that is, jar files that are themselves contained within a jar).
|
||||
This can be problematic if you need to distribute a self-contained application that can be run from the command line without unpacking.
|
||||
@ -11,7 +11,7 @@ Spring Boot takes a different approach and lets you actually nest jars directly.
|
||||
|
||||
|
||||
|
||||
[[executable-jar.nested-jars.jar-structure]]
|
||||
[[appendix.executable-jar.nested-jars.jar-structure]]
|
||||
=== The Executable Jar File Structure
|
||||
Spring Boot Loader-compatible jar files should be structured in the following way:
|
||||
|
||||
@ -41,7 +41,7 @@ Dependencies should be placed in a nested `BOOT-INF/lib` directory.
|
||||
|
||||
|
||||
|
||||
[[executable-jar.nested-jars.war-structure]]
|
||||
[[appendix.executable-jar.nested-jars.war-structure]]
|
||||
=== The Executable War File Structure
|
||||
Spring Boot Loader-compatible war files should be structured in the following way:
|
||||
|
||||
@ -75,7 +75,7 @@ Any dependencies that are required when running embedded but are not required wh
|
||||
|
||||
|
||||
|
||||
[[executable-jar.nested-jars.index-files]]
|
||||
[[appendix.executable-jar.nested-jars.index-files]]
|
||||
=== Index Files
|
||||
Spring Boot Loader-compatible jar and war archives can include additional index files under the `BOOT-INF/` directory.
|
||||
A `classpath.idx` file can be provided for both jars and wars, and it provides the ordering that jars should be added to the classpath.
|
||||
@ -86,7 +86,7 @@ These files, however, are _not_ parsed internally as YAML and they must be writt
|
||||
|
||||
|
||||
|
||||
[[executable-jar.nested-jars.classpath-index]]
|
||||
[[appendix.executable-jar.nested-jars.classpath-index]]
|
||||
=== Classpath Index
|
||||
The classpath index file can be provided in `BOOT-INF/classpath.idx`.
|
||||
It provides a list of jar names (including the directory) in the order that they should be added to the classpath.
|
||||
@ -118,7 +118,7 @@ The index file would look like this:
|
||||
|
||||
|
||||
|
||||
[[executable-jar.nested-jars.layer-index]]
|
||||
[[appendix.executable-jar.nested-jars.layer-index]]
|
||||
=== Layer Index
|
||||
The layers index file can be provided in `BOOT-INF/layers.idx`.
|
||||
It provides a list of layers and the parts of the jar that should be contained within them.
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[executable-jar.property-launcher]]
|
||||
[[appendix.executable-jar.property-launcher]]
|
||||
== PropertiesLauncher Features
|
||||
`PropertiesLauncher` has a few special features that can be enabled with external properties (System properties, environment variables, manifest entries, or `loader.properties`).
|
||||
The following table describes these properties:
|
||||
|
@ -1,10 +1,10 @@
|
||||
[[executable-jar.restrictions]]
|
||||
[[appendix.executable-jar.restrictions]]
|
||||
== Executable Jar Restrictions
|
||||
You need to consider the following restrictions when working with a Spring Boot Loader packaged application:
|
||||
|
||||
|
||||
|
||||
[[executable-jar-zip-entry-compression]]
|
||||
[[appendix.executable-jar-zip-entry-compression]]
|
||||
* Zip entry compression:
|
||||
The `ZipEntry` for a nested jar must be saved by using the `ZipEntry.STORED` method.
|
||||
This is required so that we can seek directly to individual content within the nested jar.
|
||||
@ -12,7 +12,7 @@ The content of the nested jar file itself can still be compressed, as can any ot
|
||||
|
||||
|
||||
|
||||
[[executable-jar-system-classloader]]
|
||||
[[appendix.executable-jar-system-classloader]]
|
||||
* System classLoader:
|
||||
Launched applications should use `Thread.getContextClassLoader()` when loading classes (most libraries and frameworks do so by default).
|
||||
Trying to load nested jar classes with `ClassLoader.getSystemClassLoader()` fails.
|
||||
|
@ -267,7 +267,7 @@ Here are some rules we follow internally to make sure descriptions are consisten
|
||||
* 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 <<configuration-metadata#configuration-metadata.annotation-processor,trigger meta-data generation>> so that IDE assistance is available for your keys as well.
|
||||
Make sure to <<configuration-metadata#appendix.configuration-metadata.annotation-processor,trigger meta-data generation>> so that IDE assistance is available for your keys as well.
|
||||
You may want to review the generated metadata (`META-INF/spring-configuration-metadata.json`) to make 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.
|
||||
|
||||
|
@ -337,7 +337,7 @@ For machine clients, it produces a JSON response with details of the error, the
|
||||
For browser clients, there is a "`whitelabel`" error view that renders the same data in HTML format (to customize it, add a `View` that resolves to `error`).
|
||||
|
||||
There are a number of `server.error` properties that can be set if you want to customize the default error handling behavior.
|
||||
See the <<application-properties#application-properties.server, "`Server Properties`">> section of the Appendix.
|
||||
See the <<application-properties#appendix.application-properties.server, "`Server Properties`">> section of the Appendix.
|
||||
|
||||
To replace the default behavior completely, you can implement `ErrorController` and register a bean definition of that type or add a bean of type `ErrorAttributes` to use the existing mechanism but replace the contents.
|
||||
|
||||
|
@ -801,7 +801,7 @@ include::{docs-java}/features/externalconfig/typesafeconfigurationproperties/usi
|
||||
----
|
||||
|
||||
TIP: Using `@ConfigurationProperties` also lets you generate metadata files that can be used by IDEs to offer auto-completion for your own keys.
|
||||
See the <<configuration-metadata#configuration-metadata,appendix>> for details.
|
||||
See the <<configuration-metadata#appendix.configuration-metadata,appendix>> for details.
|
||||
|
||||
|
||||
|
||||
@ -1199,7 +1199,7 @@ The following table summarizes the features that are supported by `@Configuratio
|
||||
| Yes
|
||||
| Limited (see <<features#features.external-config.typesafe-configuration-properties.vs-value-annotation.note,note below>>)
|
||||
|
||||
| <<configuration-metadata#configuration-metadata,Meta-data support>>
|
||||
| <<configuration-metadata#appendix.configuration-metadata,Meta-data support>>
|
||||
| Yes
|
||||
| No
|
||||
|
||||
|
@ -126,7 +126,7 @@ data class KotlinExampleProperties(
|
||||
}
|
||||
----
|
||||
|
||||
TIP: To generate <<configuration-metadata#configuration-metadata.annotation-processor,your own metadata>> using the annotation processor, {kotlin-docs}kapt.html[`kapt` should be configured] with the `spring-boot-configuration-processor` dependency.
|
||||
TIP: To generate <<configuration-metadata#appendix.configuration-metadata.annotation-processor,your own metadata>> using the annotation processor, {kotlin-docs}kapt.html[`kapt` should be configured] with the `spring-boot-configuration-processor` dependency.
|
||||
Note that some features (such as detecting the default value or deprecated items) are not working due to limitations in the model kapt provides.
|
||||
|
||||
|
||||
|
@ -411,7 +411,7 @@ You can customize this behavior using the configprop:spring.kafka.streams.auto-s
|
||||
|
||||
[[features.messaging.kafka.additional-properties]]
|
||||
==== Additional Kafka Properties
|
||||
The properties supported by auto configuration are shown in <<application-properties#application-properties>>.
|
||||
The properties supported by auto configuration are shown in <<application-properties#appendix.application-properties>>.
|
||||
Note that, for the most part, these properties (hyphenated or camelCase) map directly to the Apache Kafka dotted properties.
|
||||
Refer to the Apache Kafka documentation for details.
|
||||
|
||||
|
@ -334,7 +334,7 @@ To test that object JSON serialization and deserialization is working as expecte
|
||||
* `Gson`
|
||||
* `Jsonb`
|
||||
|
||||
TIP: A list of the auto-configurations that are enabled by `@JsonTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configurations that are enabled by `@JsonTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
If you need to configure elements of the auto-configuration, you can use the `@AutoConfigureJsonTesters` annotation.
|
||||
|
||||
@ -369,7 +369,7 @@ To test whether Spring MVC controllers are working as expected, use the `@WebMvc
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@WebMvcTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@WebMvcTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@WebMvcTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
TIP: If you need to register extra components, such as the Jackson `Module`, you can import additional configuration classes by using `@Import` on your test.
|
||||
|
||||
@ -417,7 +417,7 @@ To test that {spring-framework-docs}/web-reactive.html[Spring WebFlux] controlle
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@WebFluxTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configurations that are enabled by `@WebFluxTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configurations that are enabled by `@WebFluxTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
TIP: If you need to register extra components, such as Jackson `Module`, you can import additional configuration classes using `@Import` on your test.
|
||||
|
||||
@ -453,7 +453,7 @@ Regular `@Component` and `@ConfigurationProperties` beans are not scanned when t
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
(For more about using Cassandra with Spring Boot, see "<<features#features.nosql.cassandra>>", earlier in this chapter.)
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataCassandraTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataCassandraTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following example shows a typical setup for using Cassandra tests in Spring Boot:
|
||||
|
||||
@ -475,7 +475,7 @@ This can be disabled using the `showSql()` attribute of the annotation.
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@DataJpaTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataJpaTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataJpaTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
By default, data JPA tests are transactional and roll back at the end of each test.
|
||||
See the {spring-framework-docs}/testing.html#testcontext-tx-enabling-transactions[relevant section] in the Spring Framework Reference Documentation for more details.
|
||||
@ -516,7 +516,7 @@ By default, it configures an in-memory embedded database and a `JdbcTemplate`.
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@JdbcTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configurations that are enabled by `@JdbcTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configurations that are enabled by `@JdbcTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
By default, JDBC tests are transactional and roll back at the end of each test.
|
||||
See the {spring-framework-docs}/testing.html#testcontext-tx-enabling-transactions[relevant section] in the Spring Framework Reference Documentation for more details.
|
||||
@ -539,7 +539,7 @@ By default, it configures an in-memory embedded database, a `JdbcTemplate`, and
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@DataJdbcTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configurations that are enabled by `@DataJdbcTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configurations that are enabled by `@DataJdbcTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
By default, Data JDBC tests are transactional and roll back at the end of each test.
|
||||
See the {spring-framework-docs}/testing.html#testcontext-tx-enabling-transactions[relevant section] in the Spring Framework Reference Documentation for more details.
|
||||
@ -559,7 +559,7 @@ If you want to replace it with an in-memory database, you can use `@AutoConfigur
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@JooqTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configurations that are enabled by `@JooqTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configurations that are enabled by `@JooqTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
`@JooqTest` configures a `DSLContext`.
|
||||
The following example shows the `@JooqTest` annotation in use:
|
||||
@ -582,7 +582,7 @@ Regular `@Component` and `@ConfigurationProperties` beans are not scanned when t
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
(For more about using MongoDB with Spring Boot, see "<<features#features.nosql.mongodb>>", earlier in this chapter.)
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataMongoTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataMongoTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following class shows the `@DataMongoTest` annotation in use:
|
||||
|
||||
@ -609,7 +609,7 @@ Regular `@Component` and `@ConfigurationProperties` beans are not scanned when t
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
(For more about using Neo4J with Spring Boot, see "<<features#features.nosql.neo4j>>", earlier in this chapter.)
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataNeo4jTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataNeo4jTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following example shows a typical setup for using Neo4J tests in Spring Boot:
|
||||
|
||||
@ -640,7 +640,7 @@ Regular `@Component` and `@ConfigurationProperties` beans are not scanned when t
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
(For more about using Redis with Spring Boot, see "<<features#features.nosql.redis>>", earlier in this chapter.)
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataRedisTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataRedisTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following example shows the `@DataRedisTest` annotation in use:
|
||||
|
||||
@ -659,7 +659,7 @@ Regular `@Component` and `@ConfigurationProperties` beans are not scanned when t
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
(For more about using LDAP with Spring Boot, see "<<features#features.nosql.ldap>>", earlier in this chapter.)
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataLdapTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@DataLdapTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following example shows the `@DataLdapTest` annotation in use:
|
||||
|
||||
@ -685,7 +685,7 @@ By default, it auto-configures Jackson, GSON, and Jsonb support, configures a `R
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@RestClientTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@RestClientTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@RestClientTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The specific beans that you want to test should be specified by using the `value` or `components` attribute of `@RestClientTest`, as shown in the following example:
|
||||
|
||||
@ -787,7 +787,7 @@ By default, it configures a mock `WebServiceServer` bean and automatically custo
|
||||
(For more about using Web Services with Spring Boot, see "<<features#features.webservices>>", earlier in this chapter.)
|
||||
|
||||
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@WebServiceClientTest` can be <<test-auto-configuration#test-auto-configuration,found in the appendix>>.
|
||||
TIP: A list of the auto-configuration settings that are enabled by `@WebServiceClientTest` can be <<test-auto-configuration#appendix.test-auto-configuration,found in the appendix>>.
|
||||
|
||||
The following example shows the `@WebServiceClientTest` annotation in use:
|
||||
|
||||
|
@ -239,7 +239,7 @@ An uber jar packages all the classes from all the application's dependencies int
|
||||
The problem with this approach is that it becomes hard to see which libraries are in your application.
|
||||
It can also be problematic if the same filename is used (but with different content) in multiple jars.
|
||||
|
||||
Spring Boot takes a <<executable-jar#executable-jar, different approach>> and lets you actually nest jars directly.
|
||||
Spring Boot takes a <<executable-jar#appendix.executable-jar, different approach>> and lets you actually nest jars directly.
|
||||
****
|
||||
|
||||
To create an executable jar, we need to add the `spring-boot-maven-plugin` to our `pom.xml`.
|
||||
|
@ -149,7 +149,7 @@ If your application contains classes that you want to share with other projects,
|
||||
The separate module can then be depended upon by your application and other projects.
|
||||
|
||||
If you cannot rearrange your code as recommended above, Spring Boot's Maven and Gradle plugins must be configured to produce a separate artifact that is suitable for use as a dependency.
|
||||
The executable archive cannot be used as a dependency as the <<executable-jar#executable-jar.nested-jars.jar-structure,executable jar format>> packages application classes in `BOOT-INF/classes`.
|
||||
The executable archive cannot be used as a dependency as the <<executable-jar#appendix.executable-jar.nested-jars.jar-structure,executable jar format>> packages application classes in `BOOT-INF/classes`.
|
||||
This means that they cannot be found when the executable jar is used as a dependency.
|
||||
|
||||
To produce the two artifacts, one that can be used as a dependency and one that is executable, a classifier must be specified.
|
||||
|
@ -300,6 +300,6 @@ There is not (and technically cannot be) an exhaustive list of all supported pro
|
||||
|
||||
A running application with the Actuator features has a `configprops` endpoint that shows all the bound and bindable properties available through `@ConfigurationProperties`.
|
||||
|
||||
The appendix includes an <<application-properties#application-properties, `application.properties`>> example with a list of the most common properties supported by Spring Boot.
|
||||
The appendix includes an <<application-properties#appendix.application-properties, `application.properties`>> example with a list of the most common properties supported by Spring Boot.
|
||||
The definitive list comes from searching the source code for `@ConfigurationProperties` and `@Value` annotations as well as the occasional use of `Binder`.
|
||||
For more about the exact ordering of loading properties, see "<<features#features.external-config>>".
|
||||
|
@ -235,7 +235,7 @@ As of Undertow 1.4.0+, both `h2` and `h2c` are supported on JDK 8 without any ad
|
||||
=== Configure the Web Server
|
||||
Generally, you should first consider using one of the many available configuration keys and customize your web server by adding new entries in your `application.properties` (or `application.yml`, or environment, etc. see "`<<howto#howto.properties-and-configuration.discover-build-in-options-for-external-properties>>`").
|
||||
The `server.{asterisk}` namespace is quite useful here, and it includes namespaces like `server.tomcat.{asterisk}`, `server.jetty.{asterisk}` and others, for server-specific features.
|
||||
See the list of <<application-properties#application-properties>>.
|
||||
See the list of <<application-properties#appendix.application-properties>>.
|
||||
|
||||
The previous sections covered already many common use cases, such as compression, SSL or HTTP/2.
|
||||
However, if a configuration key doesn't exist for your use case, you should then look at {spring-boot-module-api}/web/server/WebServerFactoryCustomizer.html[`WebServerFactoryCustomizer`].
|
||||
|
@ -26,9 +26,9 @@ The reference documentation consists of the following sections:
|
||||
The reference documentation has the following appendices:
|
||||
|
||||
[horizontal]
|
||||
<<application-properties#application-properties,Application Properties>> :: Common application properties that can be used to configure your application.
|
||||
<<configuration-metadata#configuration-metadata,Configuration Metadata>> :: Metadata used to describe configuration properties.
|
||||
<<auto-configuration-classes#auto-configuration-classes,Auto-configuration Classes>> :: Auto-configuration classes provided by Spring Boot.
|
||||
<<test-auto-configuration#test-auto-configuration,Test Auto-configuration Annotations>> :: Test auto-configuration annotations used to test slices of your application.
|
||||
<<executable-jar#executable-jar,Executable Jars>> :: Spring Boot's executable jars, their launchers, and their format.
|
||||
<<dependency-versions#dependency-versions,Dependency Versions>> :: Details of the dependencies that are managed by Spring Boot.
|
||||
<<application-properties#appendix.application-properties,Application Properties>> :: Common application properties that can be used to configure your application.
|
||||
<<configuration-metadata#appendix.configuration-metadata,Configuration Metadata>> :: Metadata used to describe configuration properties.
|
||||
<<auto-configuration-classes#appendix.auto-configuration-classes,Auto-configuration Classes>> :: Auto-configuration classes provided by Spring Boot.
|
||||
<<test-auto-configuration#appendix.test-auto-configuration,Test Auto-configuration Annotations>> :: Test auto-configuration annotations used to test slices of your application.
|
||||
<<executable-jar#appendix.executable-jar,Executable Jars>> :: Spring Boot's executable jars, their launchers, and their format.
|
||||
<<dependency-versions#appendix.dependency-versions,Dependency Versions>> :: Details of the dependencies that are managed by Spring Boot.
|
||||
|
@ -37,14 +37,14 @@ include::howto.adoc[leveloffset=+1]
|
||||
[[appendix]]
|
||||
== Appendices
|
||||
|
||||
include::application-properties.adoc[leveloffset=+1]
|
||||
include::application-properties.adoc[leveloffset=+2]
|
||||
|
||||
include::configuration-metadata.adoc[leveloffset=+1]
|
||||
include::configuration-metadata.adoc[leveloffset=+2]
|
||||
|
||||
include::auto-configuration-classes.adoc[leveloffset=+1]
|
||||
include::auto-configuration-classes.adoc[leveloffset=+2]
|
||||
|
||||
include::test-auto-configuration.adoc[leveloffset=+1]
|
||||
include::test-auto-configuration.adoc[leveloffset=+2]
|
||||
|
||||
include::executable-jar.adoc[leveloffset=+1]
|
||||
include::executable-jar.adoc[leveloffset=+2]
|
||||
|
||||
include::dependency-versions.adoc[leveloffset=+1]
|
||||
include::dependency-versions.adoc[leveloffset=+2]
|
||||
|
@ -1,5 +1,5 @@
|
||||
[appendix]
|
||||
[[test-auto-configuration]]
|
||||
[[appendix.test-auto-configuration]]
|
||||
= Test Auto-configuration Annotations
|
||||
include::attributes.adoc[]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[[test-auto-configuration.slices]]
|
||||
[[appendix.test-auto-configuration.slices]]
|
||||
== Test Slices
|
||||
|
||||
The following table lists the various `@...Test` annotations that can be used to test slices of your application and the auto-configuration that they import by default:
|
||||
|
Loading…
Reference in New Issue
Block a user