<#if settings.post_mathjax!false>

Spring Boot, 说白了就是 Spring 的脚手架或者说是 Spring 的懒人包。
以前用 Spring 开发(SSM 时代),就像是自己买零件组装电脑:你需要自己去找各种jar 包,还要担心版本冲不冲突,然后写一大堆XML 配置文件,最后还得自己装个Tomcat 才能跑,非常繁琐,也就是大家常说的配置地狱。
而Spring Boot 就像是直接买一台品牌整机(比如 MacBook):

  1. 起步依赖(Starters):它把常用的零件都打包好了(比如 web 开发套餐),你引I入一个依赖,其他的它自动帮你配齐,而且版本都帮你管理好了,不会冲突。
  2. 自动配置(Auto-Configuration):这是它的核心。它遵循约定大于配置,比如你引I入了 MySQL 的包,它就猜到你要连数据库,自动帮你把连接池配好,除非你非要自己改。
  3. 内嵌服务器:它自带了 Tomcat,打成一个 Jar 包,一行java -jar 命令就能跑,不用再单独部署 Web 服务器了。
    所以,Spring Boot 的本质就是:Spring + 自动化配置,目的是让我们只关注业务代码,而不是把时间浪费在配置上。

SpringBoot的核心注解

@SpringBootApplication 是 Spring Boot 的核心注解,它是以下三个注解的组合:

  • @Configuration表示该类是 Spring 配置类。
  • @EnableAutoConfiguration :启用 Spring Boot 的自动配置功能。
  • @ComponentScan:自动扫描当前包及其子包中带有Spring 注解的类(如@Controller@Service等)。
    @EnableAutoConfiguration 是 Spring Boot 的自动配置核心注解,它会根据类路径中的依赖自动配置 Spring 应用中的各种组件。比如,如果你加了 spring-boot-starter-web 依赖,Spring Boot 就会自动配置嵌入式 Tomcat 服务器和 MVC 框架。

Spring Boot 的启动器 (Starters)

Spring Boot 有一堆 Starters(启动器),这些就是预设好的依赖包集合,涵盖了常见的 Spring 和第三方库。只需加一个启动器依赖,就能快速集成所需功能。
常用 starter

  • spring-boot-starter-web : 用于构建 Web 应用,包含 Spring MVC 和嵌入式 Tomcat。spring-boot-starter-data-jpa :集成 Spring Data JPA和Hibernate,数据库操作简单了。spring-boot-starter-security :集成 Spring Security,做身份验证和授权。
  • spring-boot-starter-data-jpa : 集成 Spring Data JPA和Hibernate,数据库操作简单了。
  • spring-boot-starter-security:集成 Spring Security, 做身份验证和授权。
  • spring-boot-starter-thymeleaf:集成 Thymeleaf 模板引|擎,适合MVC视图渲染。
    示例
implementation("org.springframework.boot:spring-boot-starter-web:4.0.1")

引入 spring-boot-starter-web 之后,Spring Boot 会自动配置 Web 服务器和 Spring MVC,我们只需编写业务逻辑即可。

Spring Boot的自动配置

Spring Boot 的自动配置机制依赖于 spring-boot-autoconfigure 模块,它会根据类路径中的依赖和配置文件自动配置相关的 Bean 和服务。
工作原理
Spring Boot 自动配置的核心原理是@EnableAutoConfiguration注解,他根据项目中的依赖和application.propertiesapplication.yml文件中的配置,判断需要加载哪些Bean。
通过条件注解(如@Conditional0nClass@ConditionalOnMissingBean等),Spring Boot 可以有选择地加载相关配置。
application.properties 文件自定义和覆盖默认配置。

server.port=8081  # 修改内置 Tomcat 的端口号
spring.datasource.url=jdbc:mysql://localhost:3306/mydb  # 配置数据源

SpringBoot内置服务器

Spring Boot 内置了几种常见的 Web 服务器,如 TomcatJettyUndertow。默认情况下,Spring Boot 使用嵌入式 Tomcat 作为 Web 应用的服务器。
嵌入式 Tomcat配置
Spring Boot 默认使用嵌入式 Tomcat 服务器,开发者可以通过修改配置文件来调整 Tomcat 的属性,例如端口号、线程池大小等。

server.port=8080
server.tomcat.max-threads=200

切换到 Jetty 或 Undertow
开发者可以通过替换依赖来切换嵌入式服务器。

implementation("org.springframework.boot:spring-boot-starter-jetty:4.0.1")
  • Tomcat:Apache 旗下的 “全能型选手”,是最主流的 Java Web 容器,主打稳定性和生态
  • Jetty:Eclipse 旗下的 “轻量灵活派”,天生为嵌入式和模块化设计;
  • Undertow:JBoss(RedHat)开发的 “性能标杆”,主打高性能、低资源占用,是 WildFly 的默认容器。
特性TomcatJettyUndertow
底层 IO 模型传统 BIO(也支持 NIO/NIO2),混合架构天生 NIO(非阻塞 IO),Handler 链模式基于 NIO/XNIO(异步 IO),分层架构
设计核心全功能、遵循规范、独立运行轻量、模块化、可嵌入高性能、非阻塞、低内存占用
核心架构Connector(连接器)+ Container(容器)模块化 Handler 链(按需组装)IO

Spring Boot Actuator

Spring Boot Actuator 是用来监控和管理应用的工具包,提供健康检查、指标、状态等功能。开发者用它能轻松盯紧应用的运行情况。
常见的 Actuator 端点

  • /actuator/health :检查应用的健康状态。
  • /actuator/metrics :查看应用的性能指标。
  • /actuator/info:显示应用的基本信息。

示例:在application.properties文件中启用Acutaor端点:

management.endpoints.web.exposure.include=*

访问 /actuator/health可以查看应用的健康状态信息:

{
	"status": "up"
}

本站由 Rizxfrog 使用 Stellar 创建。