In One Minute : SpringBoot
Tags: springboot, beginners, programming, oneminute
Published: 2022-10-30 12:17:06

Spring Boot is a framework that allows to easily create Spring-powered, production-grade applications and services with the absolute minimum fuss. It takes an opinionated view of the Spring platform designed to work for new and experienced users of Spring.

[Spring Boot](https://github.com/spring-projects/spring-boot) makes it very easy to create a Spring-powered application with a minimum amount of work. An application created with Spring Boot (you can quickly do it using [Spring Initializr](https://start.spring.io/)) can be:

- Created without a single line of `xml` configuration,
- Created without any requirement of an application server because Spring Boot provides an application server (Embed `tomcat`, `jetty` or `undertow`).
- Largely autoconfigured with some sensible defaults and opinionated starter POMs to simplify your `maven` configuration,
- Provide production-ready features such as metrics, health checks, and externalized configuration.

Spring Boot consists of several (optional) modules

- [Spring Boot CLI](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-tools/spring-boot-cli)
- [Spring Boot Core](https://github.com/spring-projects/spring-boot)
- [Spring Boot Autoconfigure](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-autoconfigure)
- [Spring Boot Actuator](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-actuator)
- [Spring Boot Starters](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-starters)
- [Spring Boot Tools](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-tools)

{% embed https://youtu.be/z2Tjbq1lafE %}

## Spring Boot CLI
A command line interface, based on `groovy`, for starting/stopping Spring Boot created applications.

## Spring Boot Core
The base for other modules, but it also provides some functionality that can be used on its own, eg. using command line arguments and `yaml` files as Spring Environment property sources and automatically binding environment properties to Spring bean properties (with validation).

## Spring Boot Autoconfigure
Module to autoconfigure a wide range of Spring projects. It will detect the availability of certain frameworks ( `spring-batch`, `spring-data-jpa`, `hibernate`, `jdbc`). When detected it will try to automatically configure that framework with some sensible defaults, which in general can be overridden in an application.properties/.yml file.

## Spring Boot Actuator
This project, when added, will enable certain enterprise features (Security, Metrics, Default Error pages) to your application. Like the auto configure module it uses autodetection to detect certain frameworks/features of your application.

## Spring Boot Starters
Different quickstart projects to include as a dependency in your `maven` or `gradle` build file. It will have the needed dependencies for that type of application. Currently, there are starter projects for a web project (`tomcat` and `jetty` based), `spring-batch`, `spring-data-jpa`, `spring-integration`, `spring-security` exist. Many more have been added over the years and the full list can be found [here](https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems).

## Spring Boot Tools
The `maven` and `gradle` build tool, as well as the custom Spring Boot Loader (used in the single executable jar/war), is included in this project.