Spring Boot
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
Original author(s) | Rod Johnson |
---|---|
Developer(s) | VMware |
Initial release | April 2014[1] |
Stable release | 3.2.5[2]
/ 18 April 2024 |
Repository | |
Written in | Java |
Platform | Java EE |
Type | Application framework |
License | Apache License 2.0 |
Website | spring |
Spring Boot is an open-source Java framework used for programming standalone, production-grade Spring-based applications with minimal effort.[3] Spring Boot is a convention-over-configuration extension for the Spring Java platform intended to help minimize configuration concerns while creating Spring-based applications.[4][5] Most of the application can be preconfigured using Spring team's "opinionated view"[6][7] of the best configuration and use of the Spring platform and third-party libraries.
It is widely used for building microservices, web applications, and other Java-based projects due to its ease of use and robustness.
Features[edit]
- Embedded Tomcat, Jetty or Undertow web application server.[8]
- Provide opinionated 'starter' Project Object Models (POMs) for the build tool. The only build tools supported are Maven and Gradle.[9][10]
- Automatic configuration of the Spring Application.[11]
- Provide production-ready[4] functionality such as metrics,[12] health checks,[12] and externalized configuration.[13]
- No code generation is required.[8]
- No XML configuration is required.[9]
- Optional support for Kotlin and Apache Groovy[14] in addition to Java.[15]
Bootstrapping DispatcherServlet[edit]
Spring Boot does not require manual configuration of the DispatcherServlet
, since it automatically configures the application based on the configuration it detects. [16]
SpringBootServletInitializer[edit]
Spring Boot has a class SpringBootServletInitializer
, which is a specialization of the WebApplicationInitializer
.[16] This SpringBootServletInitializer
is an out-of-the-box implementation of WebApplicationInitializer
, which eliminates the need for the developer to construct their own implementation of the WebApplicationInitializer
class.[16]
Configuration properties[edit]
The configuration properties for the Spring Boot application can be specified in the application.properties
or application.yml
file.[16]
Examples of properties that can be included in this file include the server.port
and spring.application.name
properties.[16]
Autoconfiguration[edit]
@SpringBootApplication[edit]
Spring boot has an annotation, @SpringBootApplication
, which allows the Spring Boot application to autoconfigure third-party libraries and detected features found on the classpath.[16] As an example, the class that has the @SpringBootApplication
annotation can extend the SpringBootServerInitializer
class if the application is packaged and deployed as a WAR file.[16]
The @SpringBootApplication
annotation combines three Spring-specific annotations: @SpringBootConfiguration
, @EnableAutoConfiguration
and @ComponentScan
.[17]
@SpringBootConfiguration[edit]
The @SpringBootConfiguration
annotation is a specialization of the Spring-specific @Configuration
annotation.[17] The class with the @SpringBootConfiguration
is marked as the configuration class for the Spring Boot application.[17]
@EnableAutoConfiguration[edit]
The @EnableAutoConfiguration
annotation is Spring-specific annotation that enables the Spring Boot automatic configuration. [17]
Actuator[edit]
The Spring Boot Actuator allows for monitoring and management capabilities for the Spring Boot Application.[18] A major advantage of using the Spring Boot Actuator is that it implements a number of production-ready features without requiring the developer to construct their own implementations.[18]
If Maven is used as the build tool, then the spring-boot-starter-actuator
dependency can be specified in the pom.xml
configuration file.[19]
Integration with Spring Framework Modules[edit]
Spring Boot has a number of existing Spring Framework Modules.
Spring Security[edit]
Spring Boot has integration with the Spring Security Module. The simplest way for integrating Spring Boot with Spring Security is to declare the starter dependency in the build configuration file.[20]
If Maven is used as the build tool, then the dependency with artifact ID spring-boot-starter-security
dependency can be specified in the pom.xml
configuration file.[20]
Application Servers[edit]
By default, Spring boot provides embedded web servers (such as TomCat) out-of-the-box.[21] However, Spring Boot can also be deployed as a WAR file on a standalone WildFly application server.[22]
If Maven is used as the build tool, there is a wildfly-maven-plugin
Maven plugin that allows for automatic deployment of the generated WAR file.[22]
References[edit]
- ^ "Spring Boot v1.0.0.RELEASE". github.com.
- ^ "Release 3.2.5". 18 April 2024. Retrieved 25 April 2024.
- ^ "Spring Boot Tutorial - Learn Spring Boot". GeeksforGeeks. 2023-05-08. Retrieved 2024-04-05.
- ^ a b Walls 2016, p. vii, §foreword.
- ^ Walls 2016, pp. 37–48, §2.3.
- ^ Walls 2016, p. 48, §2.4.
- ^ Deinum & Cosmina 2021, pp. 21–22, §2 Spring Framework Fundamentals.
- ^ a b Walls 2016, p. 7, §1.1.3.
- ^ a b Walls 2016, p. x, §Preface.
- ^ Musib 2022, p. 9, §1.2.1 Maven vs Gradle.
- ^ Walls 2016, pp. 4–5, §1.1.2.
- ^ a b Walls 2016, pp. 124–139, §7.
- ^ Walls 2016, pp. 49–69, §3.1-§3.2.3.
- ^ "Language Support". Spring Framework.
- ^ Musib 2022, p. 9, §1.2.2 Java vs Kotlin.
- ^ a b c d e f g Deinum & Cosmina 2021, pp. 52–54, §2 Spring Framework Fundamentals - Spring Boot.
- ^ a b c d Walls 2019, pp. 11–17, §1.2.2 Examining the Spring project structure.
- ^ a b Musib 2022, pp. 144–145, §4.4 Spring Boot Actuator.
- ^ Musib 2022, pp. 145–146, §4.4.1 Configuring Spring Boot Actuator in a Spring Boot application.
- ^ a b Musib 2022, pp. 187–192, §5.2.1 Configuring Spring Boot Actuator in a Spring Boot application.
- ^ Musib 2022, pp. 7–8, §1.1.4 Spring Boot components.
- ^ a b Musib 2022, pp. 406–417, §9.2 Deploying Spring Boot application as WAR in the wildfly application server.
- Deinum, Marten; Cosmina, Iuliana (2021). Pro Spring MVC with WebFlux. Berkeley, CA: Apress. doi:10.1007/978-1-4842-5666-4. ISBN 978-1-4842-5665-7. S2CID 231672329.
- Musib, Somnath (July 12, 2022). Spring Boot in Practice. Simon and Schuster. ISBN 978-1-61729-881-3.
- Walls, Craig (Jan 3, 2016). Spring Boot in Action. Manning. ISBN 978-1-61729-254-5.
- Walls, Craig (2019). Spring in Action. Manning. ISBN 978-1-61729-494-5.