What is Spring Boot

Spring Boot is a project that is built on the top of the Spring Framework. It provides an easier and faster way to set up, configure, and run both simple and web-based applications. It is a Spring module that provides the RAD (Rapid Application Development) feature to the Spring Framework. It is used to create a stand-alone Spring-based application that you can just run because it needs minimal Spring configuration. Spring Boot is the combination of Spring Framework and Embedded Servers. In Spring Boot, there is no requirement for XML configuration (deployment descriptor). It uses convention over configuration software design paradigm that means it decreases the effort of the developer.
We can use Spring STS IDE or Spring Initializr to develop Spring Boot Java applications.

Why should we use Spring Boot Framework?

We should use Spring Boot Framework because:

  1. ◈ The dependency injection approach is used in Spring Boot.
  2. ◈ It contains powerful database transaction management capabilities.
  3. ◈ It simplifies integration with other Java frameworks like JPA/Hibernate ORM, Struts, etc.
  4. ◈ It reduces the cost and development time of the application.

Advantages of Spring Boot
  1. ◈ It creates stand-alone Spring applications that can be started using Java -jar.
  2. ◈ It tests web applications easily with the help of different Embedded HTTP servers such as Tomcat, Jetty, etc. We don't need to deploy WAR files.
  3. ◈ It provides opinionated 'starter' POMs to simplify our Maven configuration.
  4. ◈ It provides production-ready features such as metrics, health checks, and externalized configuration.
  5. ◈ There is no requirement for XML configuration.
  6. ◈ It offers a CLI tool for developing and testing the Spring Boot application.
  7. ◈ It offers the number of plug-ins.
  8. ◈ It also minimizes writing multiple boilerplate codes (the code that has to be included in many places with little or no alteration), XML configuration, and annotations.
  9. ◈ It increases productivity and reduces development time.
Spring Boot Features
  1. ◈ Web Development
  2. ◈ SpringApplication
  3. ◈ Application events and listeners
  4. ◈ Admin features
  5. ◈ Externalized Configuration
  6. ◈ Properties Files
  7. ◈ YAML Support
  8. ◈ Type-safe Configuration
  9. ◈ Logging
  10. ◈ Security

Web Development: It is a well-suited Spring module for web application development. We can easily create a self-contained HTTP application that uses embedded servers like Tomcat, Jetty, or Undertow. We can use the spring-boot-starter-web module to start and run the application quickly.

SpringApplication: The SpringApplication is a class that provides a convenient way to bootstrap a Spring application. It can be started from the main method. We can call the application just by calling a static run() method.

Application Events and Listeners: Spring Boot uses events to handle the variety of tasks. It allows us to create factories file that is used to add listeners. We can refer it to using the ApplicationListener key.Always create factories file in META-INF folder like META-INF/spring.factories.

Admin Support: Spring Boot provides the facility to enable admin-related features for the application. It is used to access and manage applications remotely. We can enable it in the Spring Boot application by using spring.application.admin.enabled property.

Externalized Configuration: Spring Boot allows us to externalize our configuration so that we can work with the same application in different environments. The application uses YAML files to externalize configuration.

Properties Files: Spring Boot provides a rich set of Application Properties. So, we can use that in the properties file of our project. The properties file is used to set properties like server-port =8082 and many others. It helps to organize application properties.

YAML Support: It provides a convenient way of specifying the hierarchical configuration. It is a superset of JSON. The SpringApplication class automatically supports YAML. It is an alternative of properties file.

Type-safe Configuration: The strong type-safe configuration is provided to govern and validate the configuration of the application. Application configuration is always a crucial task which should be type-safe. We can also use annotation provided by this library.

Logging: Spring Boot uses Common logging for all internal logging. Logging dependencies are managed by default. We should not change logging dependencies if no customization is needed.

Security: Spring Boot applications are spring bases web applications. So, it is secure by default with basic authentication on all HTTP endpoints. A rich set of Endpoints is available to develop a secure Spring Boot application.