# Documentation Overview This section provides a brief overview of Spring Boot reference documentation. It serves as a map for the rest of the document. The latest copy of this document is available at [docs.spring.io/spring-boot/docs/current/reference/](https://docs.spring.io/spring-boot/docs/current/reference/). ## 1. First Steps If you are getting started with Spring Boot or 'Spring' in general, start with [the following topics](getting-started.html#getting-started): * **From scratch:** [Overview](getting-started.html#getting-started.introducing-spring-boot) | [Requirements](getting-started.html#getting-started.system-requirements) | [Installation](getting-started.html#getting-started.installing) * **Tutorial:** [Part 1](getting-started.html#getting-started.first-application) | [Part 2](getting-started.html#getting-started.first-application.code) * **Running your example:** [Part 1](getting-started.html#getting-started.first-application.run) | [Part 2](getting-started.html#getting-started.first-application.executable-jar) ## 2. Upgrading From an Earlier Version You should always ensure that you are running a [supported version](https://github.com/spring-projects/spring-boot/wiki/Supported-Versions) of Spring Boot. Depending on the version that you are upgrading to, you can find some additional tips here: * **From 1.x:** [Upgrading from 1.x](actuator.html#upgrading.from-1x) * **To a new feature release:** [Upgrading to New Feature Release](upgrading.html#upgrading.to-feature) * **Spring Boot CLI:** [Upgrading the Spring Boot CLI](upgrading.html#upgrading.cli) ## 3. Developing with Spring Boot Ready to actually start using Spring Boot? [We have you covered](using.html#using): * **Build systems:** [Maven](using.html#using.build-systems.maven) | [Gradle](using.html#using.build-systems.gradle) | [Ant](using.html#using.build-systems.ant) | [Starters](using.html#using.build-systems.starters) * **Best practices:** [Code Structure](using.html#using.structuring-your-code) | [@Configuration](using.html#using.configuration-classes) | [@EnableAutoConfiguration](using.html#using.auto-configuration) | [Beans and Dependency Injection](using.html#using.spring-beans-and-dependency-injection) * **Running your code:** [IDE](using.html#using.running-your-application.from-an-ide) | [Packaged](using.html#using.running-your-application.as-a-packaged-application) | [Maven](using.html#using.running-your-application.with-the-maven-plugin) | [Gradle](using.html#using.running-your-application.with-the-gradle-plugin) * **Packaging your app:** [Production jars](using.html#using.packaging-for-production) * **Spring Boot CLI:** [Using the CLI](cli.html#cli) ## 4. Learning About Spring Boot Features Need more details about Spring Boot’s core features?[The following content is for you](features.html#features): * **Spring Application:** [SpringApplication](features.html#features.spring-application) * **External Configuration:** [External Configuration](features.html#features.external-config) * **Profiles:** [Profiles](features.html#features.profiles) * **Logging:** [Logging](features.html#features.logging) ## 5. Web If you develop Spring Boot web applications, take a look at the following content: * **Servlet Web Applications:** [Spring MVC, Jersey, Embedded Servlet Containers](web.html#web.servlet) * **Reactive Web Applications:** [Spring Webflux, Embedded Servlet Containers](web.html#web.reactive) * **Graceful Shutdown:** [Graceful Shutdown](web.html#web.graceful-shutdown) * **Spring Security:** [Default Security Configuration, Auto-configuration for OAuth2, SAML](web.html#web.security) * **Spring Session:** [Auto-configuration for Spring Session](web.html#web.spring-session) * **Spring HATEOAS:** [Auto-configuration for Spring HATEOAS](web.html#web.spring-hateoas) ## 6. Data If your application deals with a datastore, you can see how to configure that here: * **SQL:** [Configuring a SQL Datastore, Embedded Database support, Connection pools, and more.](data.html#data.sql) * **NOSQL:** [Auto-configuration for NOSQL stores such as Redis, MongoDB, Neo4j, and others.](data.html#data.nosql) ## 7. Messaging If your application uses any messaging protocol, see one or more of the following sections: * **JMS:** [Auto-configuration for ActiveMQ and Artemis, Sending and Receiving messages through JMS](messaging.html#messaging.jms) * **AMQP:** [Auto-configuration for RabbitMQ](messaging.html#messaging.amqp) * **Kafka:** [Auto-configuration for Spring Kafka](messaging.html#messaging.kafka) * **RSocket:** [Auto-configuration for Spring Framework’s RSocket Support](messaging.html#messaging.rsocket) * **Spring Integration:** [Auto-configuration for Spring Integration](messaging.html#messaging.spring-integration) ## 8. IO If your application needs IO capabilities, see one or more of the following sections: * **Caching:** [Caching support EhCache, Hazelcast, Infinispan and more](io.html#io.caching) * **Quartz:** [Quartz Scheduling](io.html#io.quartz) * **Mail:** [Sending Email](io.html#io.email) * **Validation:** [JSR-303 Validation](io.html#io.validation) * **REST Clients:** [Calling REST Services with RestTemplate and WebClient](io.html#io.rest-client) * **Webservices:** [Auto-configuration for Spring Web Services](io.html#io.webservices) * **JTA:** [Distributed Transactions with JTA](io.html#io.jta) ## 9. Container Images Spring Boot provides first-class support for building efficient container images. You can read more about it here: * **Efficient Container Images:** [Tips to optimize container images such as Docker images](container-images.html#container-images.efficient-images) * **Dockerfiles:** [Building container images using dockerfiles](container-images.html#container-images.dockerfiles) * **Cloud Native Buildpacks:** [Support for Cloud Native Buildpacks with Maven and Gradle](container-images.html#container-images.buildpacks) ## 10. Advanced Topics Finally, we have a few topics for more advanced users: * **Spring Boot Applications Deployment:** [Cloud Deployment](deployment.html#deployment.cloud) | [OS Service](deployment.html#deployment.installing.nix-services) * **Build tool plugins:** [Maven](build-tool-plugins.html#build-tool-plugins.maven) | [Gradle](build-tool-plugins.html#build-tool-plugins.gradle) * **Appendix:** [Application Properties](application-properties.html#appendix.application-properties) | [Configuration Metadata](configuration-metadata.html#appendix.configuration-metadata) | [Auto-configuration Classes](auto-configuration-classes.html#appendix.auto-configuration-classes) | [Test Auto-configuration Annotations](test-auto-configuration.html#appendix.test-auto-configuration) | [Executable Jars](executable-jar.html#appendix.executable-jar) | [Dependency Versions](dependency-versions.html#appendix.dependency-versions)