diff --git a/Spring-Boot/version/documents/2.0.0.M3/guide.md b/Spring-Boot/version/documents/2.0.0.M3/guide.md index 5c2a09ab6f8c9a1a63f52151418eb072c16b8556..561dc9a5856783b8b7225928a828dff686d93983 100644 --- a/Spring-Boot/version/documents/2.0.0.M3/guide.md +++ b/Spring-Boot/version/documents/2.0.0.M3/guide.md @@ -1,17 +1,13 @@ # Spring Boot Reference Guide -### [中文文档](README_CN.md) +### [中文文档](参考手册.md) ## Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić - - **2.0.0.M3** - - Copyright © 2012-2017 *Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.* @@ -22,48 +18,598 @@ Copyright © 2012-2017 - [I. Spring Boot Documentation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation) - [1. About the documentation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-about)[2. Getting help](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-getting-help)[3. First steps](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-first-steps)[4. Working with Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_working_with_spring_boot)[5. Learning about Spring Boot features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_learning_about_spring_boot_features)[6. Moving to production](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_moving_to_production)[7. Advanced topics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_advanced_topics) + - [1. About the documentation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-about) + - [2. Getting help](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-getting-help) + - [3. First steps](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-documentation-first-steps) + - [4. Working with Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_working_with_spring_boot) + - [5. Learning about Spring Boot features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_learning_about_spring_boot_features) + - [6. Moving to production](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_moving_to_production) + - [7. Advanced topics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_advanced_topics) - [II. Getting started](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started) - [8. Introducing Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-introducing-spring-boot)[9. System Requirements](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-system-requirements)[9.1. Servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-system-requirements-servlet-containers)[10. Installing Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installing-spring-boot)[10.1. Installation instructions for the Java developer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installation-instructions-for-java)[10.1.1. Maven installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-maven-installation)[10.1.2. Gradle installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-gradle-installation)[10.2. Installing the Spring Boot CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installing-the-cli)[10.2.1. Manual installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-manual-cli-installation)[10.2.2. Installation with SDKMAN!](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-sdkman-cli-installation)[10.2.3. OSX Homebrew installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-homebrew-cli-installation)[10.2.4. MacPorts installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-macports-cli-installation)[10.2.5. Command-line completion](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-cli-command-line-completion)[10.2.6. Quick start Spring CLI example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-cli-example)[10.3. Upgrading from an earlier version of Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-upgrading-from-an-earlier-version)[11. Developing your first Spring Boot application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application)[11.1. Creating the POM](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-pom)[11.2. Adding classpath dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-dependencies)[11.3. Writing the code](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-code)[11.3.1. The @RestController and @RequestMapping annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-annotations)[11.3.2. The @EnableAutoConfiguration annotation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-auto-configuration)[11.3.3. The “main” method](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-main-method)[11.4. Running the example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-run)[11.5. Creating an executable jar](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-executable-jar)[12. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-whats-next) + - [8. Introducing Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-introducing-spring-boot) + - [9. System Requirements](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-system-requirements) + - [9.1. Servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-system-requirements-servlet-containers) + - [10. Installing Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installing-spring-boot) + - [10.1. Installation instructions for the Java developer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installation-instructions-for-java) + - [10.1.1. Maven installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-maven-installation) + - [10.1.2. Gradle installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-gradle-installation) + - [10.2. Installing the Spring Boot CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-installing-the-cli) + - [10.2.1. Manual installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-manual-cli-installation) + - [10.2.2. Installation with SDKMAN!](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-sdkman-cli-installation) + - [10.2.3. OSX Homebrew installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-homebrew-cli-installation) + - [10.2.4. MacPorts installation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-macports-cli-installation) + - [10.2.5. Command-line completion](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-cli-command-line-completion) + - [10.2.6. Quick start Spring CLI example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-cli-example) + - [10.3. Upgrading from an earlier version of Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-upgrading-from-an-earlier-version) + - [11. Developing your first Spring Boot application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application) + - [11.1. Creating the POM](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-pom) + - [11.2. Adding classpath dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-dependencies) + - [11.3. Writing the code](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-code) + - [11.3.1. The @RestController and @RequestMapping annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-annotations) + - [11.3.2. The @EnableAutoConfiguration annotation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-auto-configuration) + - [11.3.3. The “main” method](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-main-method) + - [11.4. Running the example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-run) + - [11.5. Creating an executable jar](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-first-application-executable-jar) + - [12. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#getting-started-whats-next) - [III. Using Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot) - [13. Build systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-build-systems)[13.1. Dependency management](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-dependency-management)[13.2. Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven)[13.2.1. Inheriting the starter parent](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-parent-pom)[13.2.2. Using Spring Boot without the parent POM](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-without-a-parent)[13.2.3. Using the Spring Boot Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-plugin)[13.3. Gradle](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-gradle)[13.4. Ant](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-ant)[13.5. Starters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-starter)[14. Structuring your code](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-structuring-your-code)[14.1. Using the “default” package](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-using-the-default-package)[14.2. Locating the main application class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-locating-the-main-class)[15. Configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-configuration-classes)[15.1. Importing additional configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-importing-configuration)[15.2. Importing XML configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-importing-xml-configuration)[16. Auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-auto-configuration)[16.1. Gradually replacing auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-replacing-auto-configuration)[16.2. Disabling specific auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-disabling-specific-auto-configuration)[17. Spring Beans and dependency injection](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-spring-beans-and-dependency-injection)[18. Using the @SpringBootApplication annotation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-using-springbootapplication-annotation)[19. Running your application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-your-application)[19.1. Running from an IDE](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-from-an-ide)[19.2. Running as a packaged application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-as-a-packaged-application)[19.3. Using the Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-with-the-maven-plugin)[19.4. Using the Gradle plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-with-the-gradle-plugin)[19.5. Hot swapping](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-hot-swapping)[20. Developer tools](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools)[20.1. Property defaults](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-property-defaults)[20.2. Automatic restart](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart)[20.2.1. Excluding resources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-exclude)[20.2.2. Watching additional paths](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-additional-paths)[20.2.3. Disabling restart](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-disable)[20.2.4. Using a trigger file](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-triggerfile)[20.2.5. Customizing the restart classloader](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-customizing-classload)[20.2.6. Known limitations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-known-restart-limitations)[20.3. LiveReload](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-livereload)[20.4. Global settings](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-globalsettings)[20.5. Remote applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-remote)[20.5.1. Running the remote client application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_running_the_remote_client_application)[20.5.2. Remote update](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-remote-update)[21. Packaging your application for production](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-packaging-for-production)[22. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-whats-next) + - [13. Build systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-build-systems) + - [13.1. Dependency management](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-dependency-management) + - [13.2. Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven) + - [13.2.1. Inheriting the starter parent](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-parent-pom) + - [13.2.2. Using Spring Boot without the parent POM](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-without-a-parent) + - [13.2.3. Using the Spring Boot Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-maven-plugin) + - [13.3. Gradle](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-gradle) + - [13.4. Ant](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-ant) + - [13.5. Starters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-starter) + - [14. Structuring your code](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-structuring-your-code) + - [14.1. Using the “default” package](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-using-the-default-package) + - [14.2. Locating the main application class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-locating-the-main-class) + - [15. Configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-configuration-classes) + - [15.1. Importing additional configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-importing-configuration) + - [15.2. Importing XML configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-importing-xml-configuration) + - [16. Auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-auto-configuration) + - [16.1. Gradually replacing auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-replacing-auto-configuration) + - [16.2. Disabling specific auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-disabling-specific-auto-configuration) + - [17. Spring Beans and dependency injection](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-spring-beans-and-dependency-injection) + - [18. Using the @SpringBootApplication annotation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-using-springbootapplication-annotation) + - [19. Running your application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-your-application) + - [19.1. Running from an IDE](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-from-an-ide) + - [19.2. Running as a packaged application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-as-a-packaged-application) + - [19.3. Using the Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-with-the-maven-plugin) + - [19.4. Using the Gradle plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-running-with-the-gradle-plugin) + - [19.5. Hot swapping](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-hot-swapping) + - [20. Developer tools](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools) + - [20.1. Property defaults](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-property-defaults) + - [20.2. Automatic restart](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart) + - [20.2.1. Excluding resources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-exclude) + - [20.2.2. Watching additional paths](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-additional-paths) + - [20.2.3. Disabling restart](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-disable) + - [20.2.4. Using a trigger file](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-restart-triggerfile) + - [20.2.5. Customizing the restart classloader](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-customizing-classload) + - [20.2.6. Known limitations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-known-restart-limitations) + - [20.3. LiveReload](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-livereload) + - [20.4. Global settings](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-globalsettings) + - [20.5. Remote applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-remote) + - [20.5.1. Running the remote client application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_running_the_remote_client_application) + - [20.5.2. Remote update](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-devtools-remote-update) + - [21. Packaging your application for production](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-packaging-for-production) + - [22. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#using-boot-whats-next) - [IV. Spring Boot features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features) - [23. SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-application)[23.1. Startup failure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_startup_failure)[23.2. Customizing the Banner](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-banner)[23.3. Customizing SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-spring-application)[23.4. Fluent builder API](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-fluent-builder-api)[23.5. Application events and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-events-and-listeners)[23.6. Web environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-web-environment)[23.7. Accessing application arguments](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-arguments)[23.8. Using the ApplicationRunner or CommandLineRunner](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-command-line-runner)[23.9. Application exit](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-exit)[23.10. Admin features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-admin)[24. Externalized Configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config)[24.1. Configuring random values](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-random-values)[24.2. Accessing command line properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-command-line-args)[24.3. Application property files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-application-property-files)[24.4. Profile-specific properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-profile-specific-properties)[24.5. Placeholders in properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-placeholders-in-properties)[24.6. Using YAML instead of Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-yaml)[24.6.1. Loading YAML](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-loading-yaml)[24.6.2. Exposing YAML as properties in the Spring Environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-exposing-yaml-to-spring)[24.6.3. Multi-profile YAML documents](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-multi-profile-yaml)[24.6.4. YAML shortcomings](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-yaml-shortcomings)[24.6.5. Merging YAML lists](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-complex-type-merge)[24.7. Type-safe Configuration Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties)[24.7.1. Third-party configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-3rd-party-configuration)[24.7.2. Relaxed binding](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-relaxed-binding)[24.7.3. Properties conversion](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-conversion)[24.7.4. @ConfigurationProperties Validation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-validation)[24.7.5. @ConfigurationProperties vs. @Value](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-vs-value)[25. Profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-profiles)[25.1. Adding active profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-adding-active-profiles)[25.2. Programmatically setting profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-programmatically-setting-profiles)[25.3. Profile-specific configuration files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-profile-specific-configuration)[26. Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging)[26.1. Log format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-format)[26.2. Console output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-console-output)[26.2.1. Color-coded output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-color-coded-output)[26.3. File output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-file-output)[26.4. Log Levels](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-log-levels)[26.5. Custom log configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-log-configuration)[26.6. Logback extensions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logback-extensions)[26.6.1. Profile-specific configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_profile_specific_configuration)[26.6.2. Environment properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_environment_properties)[27. Developing web applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-developing-web-applications)[27.1. The ‘Spring Web MVC framework’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc)[27.1.1. Spring MVC auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration)[27.1.2. HttpMessageConverters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-message-converters)[27.1.3. Custom JSON Serializers and Deserializers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-json-components)[27.1.4. MessageCodesResolver](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-message-codes)[27.1.5. Static Content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-static-content)[27.1.6. Custom Favicon](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-favicon)[27.1.7. ConfigurableWebBindingInitializer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-web-binding-initializer)[27.1.8. Template engines](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-template-engines)[27.1.9. Error Handling](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling)[Custom error pages](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-custom-error-pages)[Mapping error pages outside of Spring MVC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-mapping-error-pages-without-mvc)[Error Handling on WebSphere Application Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-websphere)[27.1.10. Spring HATEOAS](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-hateoas)[27.1.11. CORS support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-cors)[27.2. The ‘Spring WebFlux framework’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux)[27.2.1. Spring WebFlux auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-auto-configuration)[27.2.2. HTTP codecs with HttpMessageReaders and HttpMessageWriters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-httpcodecs)[27.2.3. Static Content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-static-content)[27.2.4. Template engines](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-template-engines)[27.3. JAX-RS and Jersey](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jersey)[27.4. Embedded servlet container support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container)[27.4.1. Servlets, Filters, and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners)[Registering Servlets, Filters, and listeners as Spring beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-beans)[27.4.2. Servlet Context Initialization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-context-initializer)[Scanning for Servlets, Filters, and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-scanning)[27.4.3. The ServletWebServerApplicationContext](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-application-context)[27.4.4. Customizing embedded servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-embedded-containers)[Programmatic customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-programmatic-embedded-container-customization)[Customizing ConfigurableServletWebServerFactory directly](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-configurableservletwebserverfactory-directly)[27.4.5. JSP limitations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jsp-limitations)[28. Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security)[28.1. OAuth2](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2)[28.1.1. Authorization Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-authorization-server)[28.1.2. Resource Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-resource-server)[28.2. Token Type in User Info](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-token-type)[28.3. Customizing the User Info RestTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-custom-user-info)[28.3.1. Client](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-custom-user-info-client)[28.3.2. Single Sign On](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-single-sign-on)[28.4. Actuator Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-actuator)[29. Working with SQL databases](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql)[29.1. Configure a DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-configure-datasource)[29.1.1. Embedded Database Support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-database-support)[29.1.2. Connection to a production database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connect-to-production-database)[29.1.3. Connection to a JNDI DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-a-jndi-datasource)[29.2. Using JdbcTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jdbc-template)[29.3. JPA and ‘Spring Data’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jpa-and-spring-data)[29.3.1. Entity Classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-entity-classes)[29.3.2. Spring Data JPA Repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-jpa-repositories)[29.3.3. Creating and dropping JPA databases](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-creating-and-dropping-jpa-databases)[29.3.4. Open EntityManager in View](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jpa-in-web-environment)[29.4. Using H2’s web console](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console)[29.4.1. Changing the H2 console’s path](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console-custom-path)[29.4.2. Securing the H2 console](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console-securing)[29.5. Using jOOQ](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jooq)[29.5.1. Code Generation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_code_generation)[29.5.2. Using DSLContext](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_dslcontext)[29.5.3. jOOQ SQL dialect](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_jooq_sql_dialect)[29.5.4. Customizing jOOQ](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_customizing_jooq)[30. Working with NoSQL technologies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-nosql)[30.1. Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-redis)[30.1.1. Connecting to Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-redis)[30.2. MongoDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongodb)[30.2.1. Connecting to a MongoDB database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-mongodb)[30.2.2. MongoTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongo-template)[30.2.3. Spring Data MongoDB repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-mongo-repositories)[30.2.4. Embedded Mongo](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongo-embedded)[30.3. Neo4j](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-neo4j)[30.3.1. Connecting to a Neo4j database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-neo4j)[30.3.2. Using the embedded mode](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-neo4j-embedded)[30.3.3. Neo4jSession](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-neo4j-ogm-session)[30.3.4. Spring Data Neo4j repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-neo4j-repositories)[30.3.5. Repository example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_repository_example)[30.4. Gemfire](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-gemfire)[30.5. Solr](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-solr)[30.5.1. Connecting to Solr](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-solr)[30.5.2. Spring Data Solr repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-solr-repositories)[30.6. Elasticsearch](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-elasticsearch)[30.6.1. Connecting to Elasticsearch using Jest](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-elasticsearch-jest)[30.6.2. Connecting to Elasticsearch using Spring Data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-elasticsearch-spring-data)[30.6.3. Spring Data Elasticsearch repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-elasticsearch-repositories)[30.7. Cassandra](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-cassandra)[30.7.1. Connecting to Cassandra](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-cassandra)[30.7.2. Spring Data Cassandra repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-cassandra-repositories)[30.8. Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-couchbase)[30.8.1. Connecting to Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-couchbase)[30.8.2. Spring Data Couchbase repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-couchbase-repositories)[30.9. LDAP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap)[30.9.1. Connecting to an LDAP server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-connecting)[30.9.2. Spring Data LDAP repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-spring-data-repositories)[30.9.3. Embedded in-memory LDAP server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-embedded)[30.10. InfluxDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-influxdb)[30.10.1. Connecting to InfluxDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-influxdb)[31. Caching](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching)[31.1. Supported cache providers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_supported_cache_providers)[31.1.1. Generic](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-generic)[31.1.2. JCache (JSR-107)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-jcache)[31.1.3. EhCache 2.x](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-ehcache2)[31.1.4. Hazelcast](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-hazelcast)[31.1.5. Infinispan](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-infinispan)[31.1.6. Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-couchbase)[31.1.7. Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-redis)[31.1.8. Caffeine](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-caffeine)[31.1.9. Simple](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-simple)[31.1.10. None](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-none)[32. Messaging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-messaging)[32.1. JMS](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jms)[32.1.1. ActiveMQ support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-activemq)[32.1.2. Artemis support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-artemis)[32.1.3. Using a JNDI ConnectionFactory](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jms-jndi)[32.1.4. Sending a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jms-sending)[32.1.5. Receiving a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jms-receiving)[32.2. AMQP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-amqp)[32.2.1. RabbitMQ support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-rabbitmq)[32.2.2. Sending a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-amqp-sending)[32.2.3. Receiving a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-amqp-receiving)[32.3. Apache Kafka Support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka)[32.3.1. Sending a Message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-sending-a-message)[32.3.2. Receiving a Message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-receiving-a-message)[32.3.3. Additional Kafka Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-extra-props)[33. Calling REST services with ‘RestTemplate’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resttemplate)[33.1. RestTemplate customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resttemplate-customization)[34. Calling REST services with ‘WebClient’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webclient)[34.1. WebClient customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webclient-customization)[35. Validation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-validation)[36. Sending email](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-email)[37. Distributed Transactions with JTA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta)[37.1. Using an Atomikos transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-atomikos)[37.2. Using a Bitronix transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-bitronix)[37.3. Using a Narayana transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-narayana)[37.4. Using a Java EE managed transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-javaee)[37.5. Mixing XA and non-XA JMS connections](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-mixed-jms)[37.6. Supporting an alternative embedded transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-supporting-alternative-embedded)[38. Hazelcast](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-hazelcast)[39. Quartz Scheduler](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-quartz)[40. Spring Integration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-integration)[41. Spring Session](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-session)[42. Monitoring and management over JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jmx)[43. Testing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing)[43.1. Test scope dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-test-scope-dependencies)[43.2. Testing Spring applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-applications)[43.3. Testing Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications)[43.3.1. Detecting test configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-detecting-config)[43.3.2. Excluding test configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-excluding-config)[43.3.3. Working with random ports](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-working-with-random-ports)[43.3.4. Mocking and spying beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-mocking-beans)[43.3.5. Auto-configured tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-tests)[43.3.6. Auto-configured JSON tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-json-tests)[43.3.7. Auto-configured Spring MVC tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-mvc-tests)[43.3.8. Auto-configured Spring WebFlux tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-webflux-tests)[43.3.9. Auto-configured Data JPA tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test)[43.3.10. Auto-configured JDBC tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc-test)[43.3.11. Auto-configured jOOQ tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jooq-test)[43.3.12. Auto-configured Data MongoDB tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-mongo-test)[43.3.13. Auto-configured Data Neo4j tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-neo4j-test)[43.3.14. Auto-configured Data Redis tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-redis-test)[43.3.15. Auto-configured Data LDAP tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-ldap-test)[43.3.16. Auto-configured REST clients](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-client)[43.3.17. Auto-configured Spring REST Docs tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-docs)[43.3.18. Using Spock to test Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-with-spock)[43.4. Test utilities](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-test-utilities)[43.4.1. ConfigFileApplicationContextInitializer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-configfileapplicationcontextinitializer-test-utility)[43.4.2. EnvironmentTestUtils](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-environment-test-utilities)[43.4.3. OutputCapture](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-output-capture-test-utility)[43.4.4. TestRestTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-rest-templates-test-utility)[44. WebSockets](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-websockets)[45. Web Services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webservices)[46. Creating your own auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-developing-auto-configuration)[46.1. Understanding auto-configured beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-understanding-auto-configured-beans)[46.2. Locating auto-configuration candidates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-locating-auto-configuration-candidates)[46.3. Condition annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-condition-annotations)[46.3.1. Class conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-class-conditions)[46.3.2. Bean conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-bean-conditions)[46.3.3. Property conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-property-conditions)[46.3.4. Resource conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resource-conditions)[46.3.5. Web application conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-web-application-conditions)[46.3.6. SpEL expression conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spel-conditions)[46.4. Creating your own starter](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter)[46.4.1. Naming](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-naming)[46.4.2. Autoconfigure module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-module-autoconfigure)[46.4.3. Starter module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-module-starter)[47. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-whats-next) + - [23. SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-application) + - [23.1. Startup failure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_startup_failure) + - [23.2. Customizing the Banner](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-banner) + - [23.3. Customizing SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-spring-application) + - [23.4. Fluent builder API](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-fluent-builder-api) + - [23.5. Application events and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-events-and-listeners) + - [23.6. Web environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-web-environment) + - [23.7. Accessing application arguments](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-arguments) + - [23.8. Using the ApplicationRunner or CommandLineRunner](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-command-line-runner) + - [23.9. Application exit](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-exit) + - [23.10. Admin features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-application-admin) + - [24. Externalized Configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config) + - [24.1. Configuring random values](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-random-values) + - [24.2. Accessing command line properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-command-line-args) + - [24.3. Application property files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-application-property-files) + - [24.4. Profile-specific properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-profile-specific-properties) + - [24.5. Placeholders in properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-placeholders-in-properties) + - [24.6. Using YAML instead of Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-yaml) + - [24.6.1. Loading YAML](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-loading-yaml) + - [24.6.2. Exposing YAML as properties in the Spring Environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-exposing-yaml-to-spring) + - [24.6.3. Multi-profile YAML documents](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-multi-profile-yaml) + - [24.6.4. YAML shortcomings](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-yaml-shortcomings) + - [24.6.5. Merging YAML lists](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-complex-type-merge) + - [24.7. Type-safe Configuration Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties) + - [24.7.1. Third-party configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-3rd-party-configuration) + - [24.7.2. Relaxed binding](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-relaxed-binding) + - [24.7.3. Properties conversion](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-conversion) + - [24.7.4. @ConfigurationProperties Validation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-validation) + - [24.7.5. @ConfigurationProperties vs. @Value](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config-vs-value) + - [25. Profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-profiles) + - [25.1. Adding active profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-adding-active-profiles) + - [25.2. Programmatically setting profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-programmatically-setting-profiles) + - [25.3. Profile-specific configuration files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-profile-specific-configuration) + - [26. Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging) + - [26.1. Log format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-format) + - [26.2. Console output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-console-output) + - [26.2.1. Color-coded output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-color-coded-output) + - [26.3. File output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logging-file-output) + - [26.4. Log Levels](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-log-levels) + - [26.5. Custom log configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-log-configuration) + - [26.6. Logback extensions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-logback-extensions) + - [26.6.1. Profile-specific configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_profile_specific_configuration) + - [26.6.2. Environment properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_environment_properties) + - [27. Developing web applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-developing-web-applications) + - [27.1. The ‘Spring Web MVC framework’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc) + - [27.1.1. Spring MVC auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration) + - [27.1.2. HttpMessageConverters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-message-converters) + - [27.1.3. Custom JSON Serializers and Deserializers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-json-components) + - [27.1.4. MessageCodesResolver](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-message-codes) + - [27.1.5. Static Content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-static-content) + - [27.1.6. Custom Favicon](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-favicon) + - [27.1.7. ConfigurableWebBindingInitializer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-web-binding-initializer) + - [27.1.8. Template engines](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-mvc-template-engines) + - [27.1.9. Error Handling](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling) + - [Custom error pages](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-custom-error-pages) + - [Mapping error pages outside of Spring MVC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-mapping-error-pages-without-mvc) + - [Error Handling on WebSphere Application Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-error-handling-websphere) + - [27.1.10. Spring HATEOAS](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-hateoas) + - [27.1.11. CORS support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-cors) + - [27.2. The ‘Spring WebFlux framework’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux) + - [27.2.1. Spring WebFlux auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-auto-configuration) + - [27.2.2. HTTP codecs with HttpMessageReaders and HttpMessageWriters](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-httpcodecs) + - [27.2.3. Static Content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-static-content) + - [27.2.4. Template engines](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-webflux-template-engines) + - [27.3. JAX-RS and Jersey](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jersey) + - [27.4. Embedded servlet container support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container) + - [27.4.1. Servlets, Filters, and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners) + - [Registering Servlets, Filters, and listeners as Spring beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-beans) + - [27.4.2. Servlet Context Initialization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-context-initializer) + - [Scanning for Servlets, Filters, and listeners](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-scanning) + - [27.4.3. The ServletWebServerApplicationContext](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-container-application-context) + - [27.4.4. Customizing embedded servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-embedded-containers) + - [Programmatic customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-programmatic-embedded-container-customization) + - [Customizing ConfigurableServletWebServerFactory directly](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-customizing-configurableservletwebserverfactory-directly) + - [27.4.5. JSP limitations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jsp-limitations) + - [28. Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security) + - [28.1. OAuth2](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2) + - [28.1.1. Authorization Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-authorization-server) + - [28.1.2. Resource Server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-resource-server) + - [28.2. Token Type in User Info](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-token-type) + - [28.3. Customizing the User Info RestTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-custom-user-info) + - [28.3.1. Client](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-custom-user-info-client) + - [28.3.2. Single Sign On](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-oauth2-single-sign-on) + - [28.4. Actuator Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-security-actuator) + - [29. Working with SQL databases](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql) + - [29.1. Configure a DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-configure-datasource) + - [29.1.1. Embedded Database Support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-embedded-database-support) + - [29.1.2. Connection to a production database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connect-to-production-database) + - [29.1.3. Connection to a JNDI DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-a-jndi-datasource) + - [29.2. Using JdbcTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jdbc-template) + - [29.3. JPA and ‘Spring Data’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jpa-and-spring-data) + - [29.3.1. Entity Classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-entity-classes) + - [29.3.2. Spring Data JPA Repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-jpa-repositories) + - [29.3.3. Creating and dropping JPA databases](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-creating-and-dropping-jpa-databases) + - [29.3.4. Open EntityManager in View](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jpa-in-web-environment) + - [29.4. Using H2’s web console](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console) + - [29.4.1. Changing the H2 console’s path](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console-custom-path) + - [29.4.2. Securing the H2 console](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-sql-h2-console-securing) + - [29.5. Using jOOQ](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jooq) + - [29.5.1. Code Generation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_code_generation) + - [29.5.2. Using DSLContext](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_dslcontext) + - [29.5.3. jOOQ SQL dialect](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_jooq_sql_dialect) + - [29.5.4. Customizing jOOQ](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_customizing_jooq) + - [30. Working with NoSQL technologies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-nosql) + - [30.1. Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-redis) + - [30.1.1. Connecting to Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-redis) + - [30.2. MongoDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongodb) + - [30.2.1. Connecting to a MongoDB database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-mongodb) + - [30.2.2. MongoTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongo-template) + - [30.2.3. Spring Data MongoDB repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-mongo-repositories) + - [30.2.4. Embedded Mongo](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-mongo-embedded) + - [30.3. Neo4j](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-neo4j) + - [30.3.1. Connecting to a Neo4j database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-neo4j) + - [30.3.2. Using the embedded mode](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-neo4j-embedded) + - [30.3.3. Neo4jSession](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-neo4j-ogm-session) + - [30.3.4. Spring Data Neo4j repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-neo4j-repositories) + - [30.3.5. Repository example](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_repository_example) + - [30.4. Gemfire](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-gemfire) + - [30.5. Solr](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-solr) + - [30.5.1. Connecting to Solr](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-solr) + - [30.5.2. Spring Data Solr repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-solr-repositories) + - [30.6. Elasticsearch](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-elasticsearch) + - [30.6.1. Connecting to Elasticsearch using Jest](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-elasticsearch-jest) + - [30.6.2. Connecting to Elasticsearch using Spring Data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-elasticsearch-spring-data) + - [30.6.3. Spring Data Elasticsearch repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-elasticsearch-repositories) + - [30.7. Cassandra](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-cassandra) + - [30.7.1. Connecting to Cassandra](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-cassandra) + - [30.7.2. Spring Data Cassandra repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-cassandra-repositories) + - [30.8. Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-couchbase) + - [30.8.1. Connecting to Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-couchbase) + - [30.8.2. Spring Data Couchbase repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spring-data-couchbase-repositories) + - [30.9. LDAP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap) + - [30.9.1. Connecting to an LDAP server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-connecting) + - [30.9.2. Spring Data LDAP repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-spring-data-repositories) + - [30.9.3. Embedded in-memory LDAP server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-ldap-embedded) + - [30.10. InfluxDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-influxdb) + - [30.10.1. Connecting to InfluxDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-connecting-to-influxdb) + - [31. Caching](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching) + - [31.1. Supported cache providers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_supported_cache_providers) + - [31.1.1. Generic](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-generic) + - [31.1.2. JCache (JSR-107)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-jcache) + - [31.1.3. EhCache 2.x](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-ehcache2) + - [31.1.4. Hazelcast](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-hazelcast) + - [31.1.5. Infinispan](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-infinispan) + - [31.1.6. Couchbase](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-couchbase) + - [31.1.7. Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-redis) + - [31.1.8. Caffeine](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-caffeine) + - [31.1.9. Simple](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-simple) + - [31.1.10. None](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-caching-provider-none) + - [32. Messaging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-messaging) + - [32.1. JMS](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jms) + - [32.1.1. ActiveMQ support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-activemq) + - [32.1.2. Artemis support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-artemis) + - [32.1.3. Using a JNDI ConnectionFactory](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jms-jndi) + - [32.1.4. Sending a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jms-sending) + - [32.1.5. Receiving a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-jms-receiving) + - [32.2. AMQP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-amqp) + - [32.2.1. RabbitMQ support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-rabbitmq) + - [32.2.2. Sending a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-amqp-sending) + - [32.2.3. Receiving a message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-using-amqp-receiving) + - [32.3. Apache Kafka Support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka) + - [32.3.1. Sending a Message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-sending-a-message) + - [32.3.2. Receiving a Message](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-receiving-a-message) + - [32.3.3. Additional Kafka Properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-kafka-extra-props) + - [33. Calling REST services with ‘RestTemplate’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resttemplate) + - [33.1. RestTemplate customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resttemplate-customization) + - [34. Calling REST services with ‘WebClient’](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webclient) + - [34.1. WebClient customization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webclient-customization) + - [35. Validation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-validation) + - [36. Sending email](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-email) + - [37. Distributed Transactions with JTA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta) + - [37.1. Using an Atomikos transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-atomikos) + - [37.2. Using a Bitronix transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-bitronix) + - [37.3. Using a Narayana transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-narayana) + - [37.4. Using a Java EE managed transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-javaee) + - [37.5. Mixing XA and non-XA JMS connections](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-mixed-jms) + - [37.6. Supporting an alternative embedded transaction manager](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jta-supporting-alternative-embedded) + - [38. Hazelcast](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-hazelcast) + - [39. Quartz Scheduler](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-quartz) + - [40. Spring Integration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-integration) + - [41. Spring Session](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-session) + - [42. Monitoring and management over JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-jmx) + - [43. Testing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing)[43.1. Test scope dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-test-scope-dependencies) + - [43.2. Testing Spring applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-applications) + - [43.3. Testing Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications) + - [43.3.1. Detecting test configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-detecting-config) + - [43.3.2. Excluding test configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-excluding-config) + - [43.3.3. Working with random ports](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-working-with-random-ports) + - [43.3.4. Mocking and spying beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-mocking-beans) + - [43.3.5. Auto-configured tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-tests) + - [43.3.6. Auto-configured JSON tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-json-tests) + - [43.3.7. Auto-configured Spring MVC tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-mvc-tests) + - [43.3.8. Auto-configured Spring WebFlux tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-webflux-tests) + - [43.3.9. Auto-configured Data JPA tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test) + - [43.3.10. Auto-configured JDBC tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc-test) + - [43.3.11. Auto-configured jOOQ tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jooq-test) + - [43.3.12. Auto-configured Data MongoDB tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-mongo-test) + - [43.3.13. Auto-configured Data Neo4j tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-neo4j-test) + - [43.3.14. Auto-configured Data Redis tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-redis-test) + - [43.3.15. Auto-configured Data LDAP tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-ldap-test) + - [43.3.16. Auto-configured REST clients](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-client) + - [43.3.17. Auto-configured Spring REST Docs tests](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-docs) + - [43.3.18. Using Spock to test Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-testing-spring-boot-applications-with-spock) + - [43.4. Test utilities](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-test-utilities) + - [43.4.1. ConfigFileApplicationContextInitializer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-configfileapplicationcontextinitializer-test-utility) + - [43.4.2. EnvironmentTestUtils](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-environment-test-utilities) + - [43.4.3. OutputCapture](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-output-capture-test-utility) + - [43.4.4. TestRestTemplate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-rest-templates-test-utility) + - [44. WebSockets](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-websockets) + - [45. Web Services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-webservices) + - [46. Creating your own auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-developing-auto-configuration) + - [46.1. Understanding auto-configured beans](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-understanding-auto-configured-beans) + - [46.2. Locating auto-configuration candidates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-locating-auto-configuration-candidates) + - [46.3. Condition annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-condition-annotations) + - [46.3.1. Class conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-class-conditions) + - [46.3.2. Bean conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-bean-conditions) + - [46.3.3. Property conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-property-conditions) + - [46.3.4. Resource conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-resource-conditions) + - [46.3.5. Web application conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-web-application-conditions) + - [46.3.6. SpEL expression conditions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-spel-conditions) + - [46.4. Creating your own starter](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter) + - [46.4.1. Naming](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-naming) + - [46.4.2. Autoconfigure module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-module-autoconfigure) + - [46.4.3. Starter module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-custom-starter-module-starter) + - [47. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-whats-next) - [V. Spring Boot Actuator: Production-ready features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready) - [48. Enabling production-ready features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-enabling)[49. Endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoints)[49.1. Customizing endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-endpoints)[49.2. Hypermedia for actuator MVC endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoint-hypermedia)[49.3. CORS support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoint-cors)[49.4. Adding custom endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-endpoints-programmatically)[49.5. Health information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-health)[49.6. Security with HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_security_with_healthindicators)[49.6.1. Auto-configured HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_auto_configured_healthindicators)[49.6.2. Writing custom HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_writing_custom_healthindicators)[49.7. Application information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info)[49.7.1. Auto-configured InfoContributors](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-autoconfigure)[49.7.2. Custom application info information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-env)[49.7.3. Git commit information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-git)[49.7.4. Build information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-build)[49.7.5. Writing custom InfoContributors](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-custom)[50. Monitoring and management over HTTP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-monitoring)[50.1. Accessing sensitive endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-sensitive-endpoints)[50.2. Customizing the management endpoint paths](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-context-path)[50.3. Customizing the management server port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-port)[50.4. Configuring management-specific SSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-management-specific-ssl)[50.5. Customizing the management server address](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-address)[50.6. Disabling HTTP endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disabling-http-endpoints)[50.7. HTTP health endpoint format and access restrictions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-health-access-restrictions)[51. Monitoring and management over JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-jmx)[51.1. Customizing MBean names](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-custom-mbean-names)[51.2. Disabling JMX endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disable-jmx-endpoints)[51.3. Using Jolokia for JMX over HTTP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-jolokia)[51.3.1. Customizing Jolokia](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-jolokia)[51.3.2. Disabling Jolokia](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disabling-jolokia)[52. Loggers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-loggers)[52.1. Configure a Logger](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-logger-configuration)[53. Metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metrics)[53.1. System metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-system-metrics)[53.2. DataSource metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-datasource-metrics)[53.3. Cache metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-datasource-cache)[53.4. Tomcat session metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-session-metrics)[53.5. Recording your own metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-recording-metrics)[53.6. Adding your own public metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-public-metrics)[53.7. Metric writers, exporters and aggregation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers)[53.7.1. Example: Export to Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-redis)[53.7.2. Example: Export to Open TSDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-open-tsdb)[53.7.3. Example: Export to Statsd](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-statsd)[53.7.4. Example: Export to JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-jmx)[53.8. Aggregating metrics from multiple sources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-aggregation)[53.9. Dropwizard Metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-dropwizard-metrics)[53.10. Message channel integration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metrics-message-channel-integration)[54. Auditing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-auditing)[55. Tracing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-tracing)[55.1. Custom tracing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-custom-tracing)[56. Process monitoring](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring)[56.1. Extend configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring-configuration)[56.2. Programmatically](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring-programmatically)[57. Cloud Foundry support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry)[57.1. Disabling extended Cloud Foundry actuator support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-disable)[57.2. Cloud Foundry self signed certificates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-ssl)[57.3. Custom security configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-custom-security)[58. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-whats-next) + - [48. Enabling production-ready features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-enabling) + - [49. Endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoints) + - [49.1. Customizing endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-endpoints) + - [49.2. Hypermedia for actuator MVC endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoint-hypermedia) + - [49.3. CORS support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-endpoint-cors) + - [49.4. Adding custom endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-endpoints-programmatically) + - [49.5. Health information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-health) + - [49.6. Security with HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_security_with_healthindicators) + - [49.6.1. Auto-configured HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_auto_configured_healthindicators) + - [49.6.2. Writing custom HealthIndicators](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_writing_custom_healthindicators) + - [49.7. Application information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info) + - [49.7.1. Auto-configured InfoContributors](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-autoconfigure) + - [49.7.2. Custom application info information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-env) + - [49.7.3. Git commit information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-git) + - [49.7.4. Build information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-build) + - [49.7.5. Writing custom InfoContributors](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-application-info-custom) + - [50. Monitoring and management over HTTP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-monitoring) + - [50.1. Accessing sensitive endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-sensitive-endpoints) + - [50.2. Customizing the management endpoint paths](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-context-path) + - [50.3. Customizing the management server port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-port) + - [50.4. Configuring management-specific SSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-management-specific-ssl) + - [50.5. Customizing the management server address](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-management-server-address) + - [50.6. Disabling HTTP endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disabling-http-endpoints) + - [50.7. HTTP health endpoint format and access restrictions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-health-access-restrictions) + - [51. Monitoring and management over JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-jmx) + - [51.1. Customizing MBean names](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-custom-mbean-names) + - [51.2. Disabling JMX endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disable-jmx-endpoints) + - [51.3. Using Jolokia for JMX over HTTP](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-jolokia) + - [51.3.1. Customizing Jolokia](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-customizing-jolokia) + - [51.3.2. Disabling Jolokia](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-disabling-jolokia) + - [52. Loggers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-loggers) + - [52.1. Configure a Logger](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-logger-configuration) + - [53. Metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metrics) + - [53.1. System metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-system-metrics) + - [53.2. DataSource metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-datasource-metrics) + - [53.3. Cache metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-datasource-cache) + - [53.4. Tomcat session metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-session-metrics) + - [53.5. Recording your own metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-recording-metrics) + - [53.6. Adding your own public metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-public-metrics) + - [53.7. Metric writers, exporters and aggregation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers) + - [53.7.1. Example: Export to Redis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-redis) + - [53.7.2. Example: Export to Open TSDB](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-open-tsdb) + - [53.7.3. Example: Export to Statsd](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-statsd) + - [53.7.4. Example: Export to JMX](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-writers-export-to-jmx) + - [53.8. Aggregating metrics from multiple sources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metric-aggregation) + - [53.9. Dropwizard Metrics](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-dropwizard-metrics) + - [53.10. Message channel integration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-metrics-message-channel-integration) + - [54. Auditing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-auditing) + - [55. Tracing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-tracing) + - [55.1. Custom tracing](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-custom-tracing) + - [56. Process monitoring](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring) + - [56.1. Extend configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring-configuration) + - [56.2. Programmatically](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-process-monitoring-programmatically) + - [57. Cloud Foundry support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry) + - [57.1. Disabling extended Cloud Foundry actuator support](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-disable) + - [57.2. Cloud Foundry self signed certificates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-ssl) + - [57.3. Custom security configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-cloudfoundry-custom-security) + - [58. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#production-ready-whats-next) - [VI. Deploying Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment) - [59. Deploying to the cloud](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment)[59.1. Cloud Foundry](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-cloud-foundry)[59.1.1. Binding to services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-cloud-foundry-services)[59.2. Heroku](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-heroku)[59.3. OpenShift](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-openshift)[59.4. Amazon Web Services (AWS)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-aws)[59.4.1. AWS Elastic Beanstalk](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_aws_elastic_beanstalk)[Using the Tomcat platform](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_the_tomcat_platform)[Using the Java SE platform](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_the_java_se_platform)[Best practices](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_best_practices)[59.4.2. Summary](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_summary)[59.5. Boxfuse and Amazon Web Services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-boxfuse)[59.6. Google Cloud](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-gae)[60. Installing Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-install)[60.1. Supported operating systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-install-supported-operating-systems)[60.2. Unix/Linux services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-service)[60.2.1. Installation as an init.d service (System V)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-initd-service)[Securing an init.d service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-initd-service-securing)[60.2.2. Installation as a systemd service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-systemd-service)[60.2.3. Customizing the startup script](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization)[Customizing script when it’s written](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization-when-it-written)[Customizing script when it runs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization-when-it-runs)[60.3. Microsoft Windows services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-windows)[61. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-whats-next) + - [59. Deploying to the cloud](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment) + - [59.1. Cloud Foundry](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-cloud-foundry) + - [59.1.1. Binding to services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-cloud-foundry-services) + - [59.2. Heroku](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-heroku) + - [59.3. OpenShift](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-openshift) + - [59.4. Amazon Web Services (AWS)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-aws) + - [59.4.1. AWS Elastic Beanstalk](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_aws_elastic_beanstalk) + - [Using the Tomcat platform](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_the_tomcat_platform) + - [Using the Java SE platform](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_using_the_java_se_platform) + - [Best practices](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_best_practices) + - [59.4.2. Summary](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_summary) + - [59.5. Boxfuse and Amazon Web Services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-boxfuse) + - [59.6. Google Cloud](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cloud-deployment-gae) + - [60. Installing Spring Boot applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-install) + - [60.1. Supported operating systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-install-supported-operating-systems) + - [60.2. Unix/Linux services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-service) + - [60.2.1. Installation as an init.d service (System V)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-initd-service) + - [Securing an init.d service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-initd-service-securing) + - [60.2.2. Installation as a systemd service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-systemd-service) + - [60.2.3. Customizing the startup script](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization) + - [Customizing script when it’s written](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization-when-it-written) + - [Customizing script when it runs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-script-customization-when-it-runs) + - [60.3. Microsoft Windows services](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-windows) + - [61. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#deployment-whats-next) - [VII. Spring Boot CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli) - [62. Installing the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-installation)[63. Using the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-using-the-cli)[63.1. Running applications using the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-run)[63.1.1. Deduced “grab” dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-deduced-grab-annotations)[63.1.2. Deduced “grab” coordinates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-grab-deduced-coordinates)[63.1.3. Default import statements](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-import-statements)[63.1.4. Automatic main method](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-automatic-main-method)[63.1.5. Custom dependency management](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-grab-deduced-coordinates-custom-dependency-management)[63.2. Applications with multiple source files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-multiple-source-files)[63.3. Packaging your application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-jar)[63.4. Initialize a new project](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-init)[63.5. Using the embedded shell](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-shell)[63.6. Adding extensions to the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-install-uninstall)[64. Developing application with the Groovy beans DSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-groovy-beans-dsl)[65. Configuring the CLI with settings.xml](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-maven-settings)[66. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-whats-next) + - [62. Installing the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-installation) + - [63. Using the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-using-the-cli) + - [63.1. Running applications using the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-run) + - [63.1.1. Deduced “grab” dependencies](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-deduced-grab-annotations) + - [63.1.2. Deduced “grab” coordinates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-grab-deduced-coordinates) + - [63.1.3. Default import statements](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-import-statements) + - [63.1.4. Automatic main method](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-automatic-main-method) + - [63.1.5. Custom dependency management](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-default-grab-deduced-coordinates-custom-dependency-management) + - [63.2. Applications with multiple source files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-multiple-source-files) + - [63.3. Packaging your application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-jar) + - [63.4. Initialize a new project](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-init) + - [63.5. Using the embedded shell](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-shell) + - [63.6. Adding extensions to the CLI](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-install-uninstall) + - [64. Developing application with the Groovy beans DSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-groovy-beans-dsl) + - [65. Configuring the CLI with settings.xml](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-maven-settings) + - [66. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#cli-whats-next) - [VIII. Build tool plugins](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins) - [67. Spring Boot Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-maven-plugin)[67.1. Including the plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-include-maven-plugin)[67.2. Packaging executable jar and war files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-maven-packaging)[68. Spring Boot Gradle plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-gradle-plugin)[69. Spring Boot AntLib module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-antlib)[69.1. Spring Boot Ant tasks](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_ant_tasks)[69.1.1. spring-boot:exejar](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_exejar)[69.1.2. Examples](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_examples)[69.2. spring-boot:findmainclass](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_findmainclass)[69.2.1. Examples](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_examples_2)[70. Supporting other build systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-other-build-systems)[70.1. Repackaging archives](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-repackaging-archives)[70.2. Nested libraries](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-nested-libraries)[70.3. Finding a main class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-find-a-main-class)[70.4. Example repackage implementation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-repackage-implementation)[71. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-whats-next) + - [67. Spring Boot Maven plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-maven-plugin) + - [67.1. Including the plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-include-maven-plugin) + - [67.2. Packaging executable jar and war files](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-maven-packaging) + - [68. Spring Boot Gradle plugin](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-gradle-plugin) + - [69. Spring Boot AntLib module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-antlib) + - [69.1. Spring Boot Ant tasks](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_ant_tasks) + - [69.1.1. spring-boot:exejar](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_exejar) + - [69.1.2. Examples](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_examples) + - [69.2. spring-boot:findmainclass](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_boot_findmainclass) + - [69.2.1. Examples](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_examples_2) + - [70. Supporting other build systems](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-other-build-systems) + - [70.1. Repackaging archives](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-repackaging-archives) + - [70.2. Nested libraries](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-nested-libraries) + - [70.3. Finding a main class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-find-a-main-class) + - [70.4. Example repackage implementation](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-repackage-implementation)[71. What to read next](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#build-tool-plugins-whats-next) - [IX. ‘How-to’ guides](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto) - [72. Spring Boot application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-spring-boot-application)[72.1. Create your own FailureAnalyzer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-failure-analyzer)[72.2. Troubleshoot auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-troubleshoot-auto-configuration)[72.3. Customize the Environment or ApplicationContext before it starts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-environment-or-application-context)[72.4. Build an ApplicationContext hierarchy (adding a parent or root context)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-an-application-context-hierarchy)[72.5. Create a non-web application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-non-web-application)[73. Properties & configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-properties-and-configuration)[73.1. Automatically expand properties at build time](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion)[73.1.1. Automatic property expansion using Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion-maven)[73.1.2. Automatic property expansion using Gradle](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion-gradle)[73.2. Externalize the configuration of SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-externalize-configuration)[73.3. Change the location of external properties of an application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-location-of-external-properties)[73.4. Use ‘short’ command line arguments](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-short-command-line-arguments)[73.5. Use YAML for external properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-yaml-for-external-properties)[73.6. Set the active Spring profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-set-active-spring-profiles)[73.7. Change configuration depending on the environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-configuration-depending-on-the-environment)[73.8. Discover built-in options for external properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-discover-build-in-options-for-external-properties)[74. Embedded Web servers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-embedded-web-servers)[74.1. Use another Web server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-another-web-server)[74.2. Configure Jetty](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-jetty)[74.3. Add a Servlet, Filter or Listener to an application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener)[74.3.1. Add a Servlet, Filter or Listener using a Spring bean](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener-as-spring-bean)[Disable registration of a Servlet or Filter](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-disable-registration-of-a-servlet-or-filter)[74.3.2. Add Servlets, Filters, and Listeners using classpath scanning](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener-using-scanning)[74.4. Change the HTTP port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-http-port)[74.5. Use a random unassigned HTTP port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-user-a-random-unassigned-http-port)[74.6. Discover the HTTP port at runtime](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-discover-the-http-port-at-runtime)[74.7. Configure SSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-ssl)[74.8. Configure Access Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-accesslogs)[74.9. Use behind a front-end proxy server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-tomcat-behind-a-proxy-server)[74.9.1. Customize Tomcat’s proxy configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-tomcat-behind-a-proxy-server)[74.10. Configure Tomcat](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-tomcat)[74.11. Enable Multiple Connectors with Tomcat](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-multiple-connectors-in-tomcat)[74.12. Use Tomcat’s LegacyCookieProcessor](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-tomcat-legacycookieprocessor)[74.13. Configure Undertow](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-undertow)[74.14. Enable Multiple Listeners with Undertow](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-multiple-listeners-in-undertow)[74.15. Create WebSocket endpoints using @ServerEndpoint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-websocket-endpoints-using-serverendpoint)[74.16. Enable HTTP response compression](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#how-to-enable-http-response-compression)[75. Spring MVC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-spring-mvc)[75.1. Write a JSON REST service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-write-a-json-rest-service)[75.2. Write an XML REST service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-write-an-xml-rest-service)[75.3. Customize the Jackson ObjectMapper](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-jackson-objectmapper)[75.4. Customize the @ResponseBody rendering](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-responsebody-rendering)[75.5. Handling Multipart File Uploads](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-multipart-file-upload-configuration)[75.6. Switch off the Spring MVC DispatcherServlet](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-the-spring-mvc-dispatcherservlet)[75.7. Switch off the Default MVC configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-default-mvc-configuration)[75.8. Customize ViewResolvers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-view-resolvers)[76. HTTP clients](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-http-clients)[76.1. Configure RestTemplate to use a proxy](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-http-clients-proxy-configuration)[77. Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-logging)[77.1. Configure Logback for logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-logback-for-logging)[77.1.1. Configure logback for file only output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-logback-for-logging-fileonly)[77.2. Configure Log4j for logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-log4j-for-logging)[77.2.1. Use YAML or JSON to configure Log4j 2](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-log4j-for-logging-yaml-or-json-config)[78. Data Access](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-data-access)[78.1. Configure a custom DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-a-datasource)[78.2. Configure Two DataSources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-two-datasources)[78.3. Use Spring Data repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-spring-data-repositories)[78.4. Separate @Entity definitions from Spring configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-separate-entity-definitions-from-spring-configuration)[78.5. Configure JPA properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-jpa-properties)[78.6. Configure Hibernate Naming Strategy](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-hibernate-naming-strategy)[78.7. Use a custom EntityManagerFactory](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-custom-entity-manager)[78.8. Use Two EntityManagers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-two-entity-managers)[78.9. Use a traditional persistence.xml](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-traditional-persistence-xml)[78.10. Use Spring Data JPA and Mongo repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-spring-data-jpa--and-mongo-repositories)[78.11. Expose Spring Data repositories as REST endpoint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-exposing-spring-data-repositories-rest-endpoint)[78.12. Configure a component that is used by JPA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-a-component-that-is-used-by-JPA)[79. Database initialization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-database-initialization)[79.1. Initialize a database using JPA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-jpa)[79.2. Initialize a database using Hibernate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-hibernate)[79.3. Initialize a database using Spring JDBC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-spring-jdbc)[79.4. Initialize a Spring Batch database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-spring-batch-database)[79.5. Use a higher-level database migration tool](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-a-higher-level-database-migration-tool)[79.5.1. Execute Flyway database migrations on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-flyway-database-migrations-on-startup)[79.5.2. Execute Liquibase database migrations on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-liquibase-database-migrations-on-startup)[80. Messaging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-messaging)[80.1. Disable transacted JMS session](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-jms-disable-transaction)[81. Batch applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-batch-applications)[81.1. Execute Spring Batch jobs on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-spring-batch-jobs-on-startup)[82. Actuator](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-actuator)[82.1. Change the HTTP port or address of the actuator endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-http-port-or-address-of-the-actuator-endpoints)[82.2. Customize the ‘whitelabel’ error page](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-whitelabel-error-page)[82.3. Actuator and Jersey](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-actuator-with-jersey)[83. Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-security)[83.1. Switch off the Spring Boot security configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-spring-boot-security-configuration)[83.2. Change the AuthenticationManager and add user accounts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-authenticationmanager-and-add-user-accounts)[83.3. Enable HTTPS when running behind a proxy server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-https)[84. Hot swapping](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-hotswapping)[84.1. Reload static content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-static-content)[84.2. Reload templates without restarting the container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-thymeleaf-template-content)[84.2.1. Thymeleaf templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-thymeleaf-content)[84.2.2. FreeMarker templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-freemarker-content)[84.2.3. Groovy templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-groovy-template-content)[84.3. Fast application restarts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-fast-restart)[84.4. Reload Java classes without restarting the container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-java-classes-without-restarting)[85. Build](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build)[85.1. Generate build information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-info)[85.2. Generate git information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-git-info)[85.3. Customize dependency versions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-dependency-versions)[85.4. Create an executable JAR with Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-an-executable-jar-with-maven)[85.5. Use a Spring Boot application as a dependency](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-an-additional-executable-jar)[85.6. Extract specific libraries when an executable jar runs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-extract-specific-libraries-when-an-executable-jar-runs)[85.7. Create a non-executable JAR with exclusions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-nonexecutable-jar)[85.8. Remote debug a Spring Boot application started with Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-remote-debug-maven-run)[85.9. Build an executable archive from Ant without using spring-boot-antlib](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-an-executable-archive-with-ant)[86. Traditional deployment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-traditional-deployment)[86.1. Create a deployable war file](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-deployable-war-file)[86.2. Create a deployable war file for older servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-deployable-war-file-for-older-containers)[86.3. Convert an existing application to Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-convert-an-existing-application-to-spring-boot)[86.4. Deploying a WAR to WebLogic](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-weblogic)[86.5. Deploying a WAR in an Old (Servlet 2.5) Container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-servlet-2-5)[86.6. Use Lettuce instead of Jedis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-lettuce-instead-of-jedis) + - [72. Spring Boot application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-spring-boot-application) + - [72.1. Create your own FailureAnalyzer](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-failure-analyzer) + - [72.2. Troubleshoot auto-configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-troubleshoot-auto-configuration) + - [72.3. Customize the Environment or ApplicationContext before it starts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-environment-or-application-context) + - [72.4. Build an ApplicationContext hierarchy (adding a parent or root context)](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-an-application-context-hierarchy) + - [72.5. Create a non-web application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-non-web-application) + - [73. Properties & configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-properties-and-configuration) + - [73.1. Automatically expand properties at build time](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion) + - [73.1.1. Automatic property expansion using Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion-maven) + - [73.1.2. Automatic property expansion using Gradle](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-automatic-expansion-gradle) + - [73.2. Externalize the configuration of SpringApplication](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-externalize-configuration) + - [73.3. Change the location of external properties of an application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-location-of-external-properties) + - [73.4. Use ‘short’ command line arguments](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-short-command-line-arguments) + - [73.5. Use YAML for external properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-yaml-for-external-properties) + - [73.6. Set the active Spring profiles](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-set-active-spring-profiles) + - [73.7. Change configuration depending on the environment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-configuration-depending-on-the-environment) + - [73.8. Discover built-in options for external properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-discover-build-in-options-for-external-properties) + - [74. Embedded Web servers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-embedded-web-servers) + - [74.1. Use another Web server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-another-web-server) + - [74.2. Configure Jetty](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-jetty) + - [74.3. Add a Servlet, Filter or Listener to an application](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener) + - [74.3.1. Add a Servlet, Filter or Listener using a Spring bean](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener-as-spring-bean) + - [Disable registration of a Servlet or Filter](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-disable-registration-of-a-servlet-or-filter) + - [74.3.2. Add Servlets, Filters, and Listeners using classpath scanning](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-add-a-servlet-filter-or-listener-using-scanning) + - [74.4. Change the HTTP port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-http-port) + - [74.5. Use a random unassigned HTTP port](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-user-a-random-unassigned-http-port) + - [74.6. Discover the HTTP port at runtime](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-discover-the-http-port-at-runtime) + - [74.7. Configure SSL](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-ssl) + - [74.8. Configure Access Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-accesslogs) + - [74.9. Use behind a front-end proxy server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-tomcat-behind-a-proxy-server) + - [74.9.1. Customize Tomcat’s proxy configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-tomcat-behind-a-proxy-server) + - [74.10. Configure Tomcat](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-tomcat) + - [74.11. Enable Multiple Connectors with Tomcat](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-multiple-connectors-in-tomcat) + - [74.12. Use Tomcat’s LegacyCookieProcessor](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-tomcat-legacycookieprocessor) + - [74.13. Configure Undertow](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-undertow) + - [74.14. Enable Multiple Listeners with Undertow](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-multiple-listeners-in-undertow) + - [74.15. Create WebSocket endpoints using @ServerEndpoint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-websocket-endpoints-using-serverendpoint) + - [74.16. Enable HTTP response compression](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#how-to-enable-http-response-compression) + - [75. Spring MVC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-spring-mvc) + - [75.1. Write a JSON REST service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-write-a-json-rest-service) + - [75.2. Write an XML REST service](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-write-an-xml-rest-service) + - [75.3. Customize the Jackson ObjectMapper](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-jackson-objectmapper) + - [75.4. Customize the @ResponseBody rendering](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-responsebody-rendering) + - [75.5. Handling Multipart File Uploads](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-multipart-file-upload-configuration) + - [75.6. Switch off the Spring MVC DispatcherServlet](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-the-spring-mvc-dispatcherservlet) + - [75.7. Switch off the Default MVC configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-default-mvc-configuration) + - [75.8. Customize ViewResolvers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-view-resolvers) + - [76. HTTP clients](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-http-clients) + - [76.1. Configure RestTemplate to use a proxy](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-http-clients-proxy-configuration) + - [77. Logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-logging) + - [77.1. Configure Logback for logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-logback-for-logging) + - [77.1.1. Configure logback for file only output](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-logback-for-logging-fileonly) + - [77.2. Configure Log4j for logging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-log4j-for-logging) + - [77.2.1. Use YAML or JSON to configure Log4j 2](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-log4j-for-logging-yaml-or-json-config) + - [78. Data Access](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-data-access) + - [78.1. Configure a custom DataSource](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-a-datasource) + - [78.2. Configure Two DataSources](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-two-datasources) + - [78.3. Use Spring Data repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-spring-data-repositories) + - [78.4. Separate @Entity definitions from Spring configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-separate-entity-definitions-from-spring-configuration) + - [78.5. Configure JPA properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-jpa-properties) + - [78.6. Configure Hibernate Naming Strategy](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-hibernate-naming-strategy) + - [78.7. Use a custom EntityManagerFactory](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-custom-entity-manager) + - [78.8. Use Two EntityManagers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-two-entity-managers) + - [78.9. Use a traditional persistence.xml](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-traditional-persistence-xml) + - [78.10. Use Spring Data JPA and Mongo repositories](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-spring-data-jpa--and-mongo-repositories) + - [78.11. Expose Spring Data repositories as REST endpoint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-exposing-spring-data-repositories-rest-endpoint) + - [78.12. Configure a component that is used by JPA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-configure-a-component-that-is-used-by-JPA) + - [79. Database initialization](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-database-initialization) + - [79.1. Initialize a database using JPA](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-jpa) + - [79.2. Initialize a database using Hibernate](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-hibernate) + - [79.3. Initialize a database using Spring JDBC](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-database-using-spring-jdbc) + - [79.4. Initialize a Spring Batch database](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-initialize-a-spring-batch-database) + - [79.5. Use a higher-level database migration tool](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-a-higher-level-database-migration-tool) + - [79.5.1. Execute Flyway database migrations on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-flyway-database-migrations-on-startup) + - [79.5.2. Execute Liquibase database migrations on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-liquibase-database-migrations-on-startup) + - [80. Messaging](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-messaging) + - [80.1. Disable transacted JMS session](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-jms-disable-transaction) + - [81. Batch applications](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-batch-applications) + - [81.1. Execute Spring Batch jobs on startup](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-execute-spring-batch-jobs-on-startup) + - [82. Actuator](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-actuator) + - [82.1. Change the HTTP port or address of the actuator endpoints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-http-port-or-address-of-the-actuator-endpoints) + - [82.2. Customize the ‘whitelabel’ error page](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-the-whitelabel-error-page) + - [82.3. Actuator and Jersey](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-actuator-with-jersey) + - [83. Security](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-security) + - [83.1. Switch off the Spring Boot security configuration](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-switch-off-spring-boot-security-configuration) + - [83.2. Change the AuthenticationManager and add user accounts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-change-the-authenticationmanager-and-add-user-accounts) + - [83.3. Enable HTTPS when running behind a proxy server](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-enable-https) + - [84. Hot swapping](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-hotswapping) + - [84.1. Reload static content](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-static-content) + - [84.2. Reload templates without restarting the container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-thymeleaf-template-content) + - [84.2.1. Thymeleaf templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-thymeleaf-content) + - [84.2.2. FreeMarker templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-freemarker-content) + - [84.2.3. Groovy templates](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-groovy-template-content) + - [84.3. Fast application restarts](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-fast-restart) + - [84.4. Reload Java classes without restarting the container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-reload-java-classes-without-restarting) + - [85. Build](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build) + - [85.1. Generate build information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-info) + - [85.2. Generate git information](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-git-info) + - [85.3. Customize dependency versions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-customize-dependency-versions) + - [85.4. Create an executable JAR with Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-an-executable-jar-with-maven) + - [85.5. Use a Spring Boot application as a dependency](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-an-additional-executable-jar) + - [85.6. Extract specific libraries when an executable jar runs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-extract-specific-libraries-when-an-executable-jar-runs) + - [85.7. Create a non-executable JAR with exclusions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-nonexecutable-jar) + - [85.8. Remote debug a Spring Boot application started with Maven](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-remote-debug-maven-run) + - [85.9. Build an executable archive from Ant without using spring-boot-antlib](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-build-an-executable-archive-with-ant) + - [86. Traditional deployment](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-traditional-deployment) + - [86.1. Create a deployable war file](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-deployable-war-file) + - [86.2. Create a deployable war file for older servlet containers](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-create-a-deployable-war-file-for-older-containers) + - [86.3. Convert an existing application to Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-convert-an-existing-application-to-spring-boot) + - [86.4. Deploying a WAR to WebLogic](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-weblogic) + - [86.5. Deploying a WAR in an Old (Servlet 2.5) Container](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-servlet-2-5) + - [86.6. Use Lettuce instead of Jedis](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#howto-use-lettuce-instead-of-jedis) - [X. Appendices](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#appendix) - [A. Common application properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#common-application-properties)[B. Configuration meta-data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata)[B.1. Meta-data format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-format)[B.1.1. Group Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-group-attributes)[B.1.2. Property Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-property-attributes)[B.1.3. Hint Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-hints-attributes)[B.1.4. Repeated meta-data items](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-repeated-items)[B.2. Providing manual hints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-providing-manual-hints)[B.2.1. Value hint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_value_hint)[B.2.2. Value provider](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_value_provider)[Any](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_any)[Class reference](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_class_reference)[Handle As](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_handle_as)[Logger name](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_logger_name)[Spring bean reference](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_bean_reference)[Spring profile name](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_profile_name)[B.3. Generating your own meta-data using the annotation processor](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-annotation-processor)[B.3.1. Nested properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-nested-properties)[B.3.2. Adding additional meta-data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-additional-metadata)[C. Auto-configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes)[C.1. From the “spring-boot-autoconfigure” module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes-from-autoconfigure-module)[C.2. From the “spring-boot-actuator” module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes-from-actuator)[D. Test auto-configuration annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#test-auto-configuration)[E. The executable jar format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar)[E.1. Nested JARs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-nested-jars)[E.1.1. The executable jar file structure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jar-file-structure)[E.1.2. The executable war file structure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-war-file-structure)[E.2. Spring Boot’s “JarFile” class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jarfile)[E.2.1. Compatibility with the standard Java “JarFile”](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jarfile-compatibility)[E.3. Launching executable jars](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-launching)[E.3.1. Launcher manifest](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-launcher-manifest)[E.3.2. Exploded archives](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-exploded-archives)[E.4. PropertiesLauncher Features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-property-launcher-features)[E.5. Executable jar restrictions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-restrictions)[E.5.1. Zip entry compression](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-zip-entry-compression)[E.5.2. System ClassLoader](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-system-classloader)[E.6. Alternative single jar solutions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-alternatives)[F. Dependency versions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#appendix-dependency-versions) + - [A. Common application properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#common-application-properties) + - [B. Configuration meta-data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata) + - [B.1. Meta-data format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-format) + - [B.1.1. Group Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-group-attributes) + - [B.1.2. Property Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-property-attributes) + - [B.1.3. Hint Attributes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-hints-attributes) + - [B.1.4. Repeated meta-data items](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-repeated-items) + - [B.2. Providing manual hints](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-providing-manual-hints) + - [B.2.1. Value hint](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_value_hint) + - [B.2.2. Value provider](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_value_provider) + - [Any](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_any) + - [Class reference](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_class_reference) + - [Handle As](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_handle_as) + - [Logger name](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_logger_name) + - [Spring bean reference](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_bean_reference) + - [Spring profile name](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#_spring_profile_name) + - [B.3. Generating your own meta-data using the annotation processor](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-annotation-processor) + - [B.3.1. Nested properties](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-nested-properties) + - [B.3.2. Adding additional meta-data](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#configuration-metadata-additional-metadata) + - [C. Auto-configuration classes](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes) + - [C.1. From the “spring-boot-autoconfigure” module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes-from-autoconfigure-module) + - [C.2. From the “spring-boot-actuator” module](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#auto-configuration-classes-from-actuator) + - [D. Test auto-configuration annotations](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#test-auto-configuration) + - [E. The executable jar format](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar) + - [E.1. Nested JARs](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-nested-jars) + - [E.1.1. The executable jar file structure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jar-file-structure) + - [E.1.2. The executable war file structure](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-war-file-structure) + - [E.2. Spring Boot’s “JarFile” class](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jarfile) + - [E.2.1. Compatibility with the standard Java “JarFile”](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-jarfile-compatibility) + - [E.3. Launching executable jars](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-launching) + - [E.3.1. Launcher manifest](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-launcher-manifest) + - [E.3.2. Exploded archives](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-exploded-archives) + - [E.4. PropertiesLauncher Features](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-property-launcher-features) + - [E.5. Executable jar restrictions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-restrictions) + - [E.5.1. Zip entry compression](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-zip-entry-compression) + - [E.5.2. System ClassLoader](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-system-classloader) + - [E.6. Alternative single jar solutions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#executable-jar-alternatives) + - [F. Dependency versions](https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#appendix-dependency-versions) # Part I. Spring Boot Documentation - - This section provides a brief overview of Spring Boot reference documentation. Think of it as map for the rest of the document. You can read this reference guide in a linear fashion, or you can skip sections if something doesn’t interest you. ## 1. About the documentation