# 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)

