Spring Boot核心知识点全解析
文章目录
- 🌱 一、核心基础
- 🛠️ 二、Web 开发支持
- 💾 三、数据访问
- 🔐 四、安全与权限
- 📊 五、监控与运维
- 🔄 六、异步与消息
- ☁️ 七、云原生与微服务
- 🧪 八、测试支持
- 🚀 九、高级特性(进阶)
- ✅ 总结:Spring Boot 核心价值
以下是 Spring Boot 的核心知识点体系,涵盖其主要功能模块、常用技术栈集成以及生产实践中的关键能力,适合用于系统学习、面试准备或项目架构设计参考。
🌱 一、核心基础
-
自动配置(Auto-configuration)
- 基于
@Conditional注解实现条件化装配 spring.factories(旧)与spring-autoconfigure-metadata.json(新)机制- 如何自定义 Starter 和自动配置类
- 基于
-
起步依赖(Starter Dependencies)
- 简化 Maven/Gradle 依赖管理
- 常见 Starter:
spring-boot-starter-web、spring-boot-starter-data-jpa、spring-boot-starter-security等
-
主程序入口与启动流程
@SpringBootApplication注解解析(@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan)SpringApplication.run()执行流程:- 应用上下文创建
- 初始化器(ApplicationContextInitializer)
- 监听器(ApplicationListener)
- Web 类型推断
- 自动配置执行
-
外部化配置(Externalized Configuration)
- 配置文件优先级:
application.properties/yml→ 命令行参数 → 环境变量 → profile-specific 文件 - 多环境配置:
application-{profile}.yml - 使用
@Value、@ConfigurationProperties绑定属性 - 配置加密(如 Jasypt)
- 配置文件优先级:
-
Profile 管理
- 使用
@Profile("dev")控制 Bean 加载 - 在
application.yml中分环境配置数据源、日志级别等
- 使用
🛠️ 二、Web 开发支持
-
嵌入式 Web 容器
- 默认使用 Tomcat,可切换为 Jetty 或 Undertow
- 容器配置:端口、上下文路径、连接数等
-
RESTful API 开发
@RestController、@RequestMapping、@GetMapping等注解- 参数绑定:
@RequestParam、@PathVariable、@RequestBody - 数据校验:
@Valid+javax.validation
-
静态资源处理
- 默认映射
/static、/public、/resources、/META-INF/resources - 自定义资源路径和缓存策略
- 默认映射
-
拦截器与过滤器
- 实现
HandlerInterceptor或继承OncePerRequestFilter - 注册方式:
WebMvcConfigurer.addInterceptors()
- 实现
-
异常统一处理
- 使用
@ControllerAdvice+@ExceptionHandler - 返回标准化错误响应结构(如 RFC 7807 Problem Details)
- 使用
-
跨域支持(CORS)
- 全局配置:实现
WebMvcConfigurer.addCorsMappings() - 局部配置:
@CrossOrigin注解
- 全局配置:实现
💾 三、数据访问
-
Spring Data JPA / MyBatis 集成
JpaRepository接口方法命名规则- 自定义查询:
@Query、@Modifying - 分页与排序:
Pageable、Page<T>
-
事务管理
- 声明式事务:
@Transactional - 传播行为、隔离级别、回滚规则
- 注意事项:自调用失效、异常类型控制
- 声明式事务:
-
数据库连接池
- 默认 HikariCP(高性能)
- 配置最大连接数、超时时间、健康检查
-
Flyway / Liquibase 数据库迁移
- 版本化 SQL 脚本管理
- 启动时自动执行迁移
-
Redis 缓存集成
@Cacheable、@CachePut、@CacheEvict- 自定义 KeyGenerator 和 CacheManager
- RedisTemplate 与 StringRedisTemplate 使用
🔐 四、安全与权限
-
Spring Security 集成
- 认证(Authentication)与授权(Authorization)
- 表单登录、JWT、OAuth2 / OpenID Connect
- 方法级安全:
@PreAuthorize、@Secured
-
CSRF、XSS 防护
- 默认开启 CSRF(表单场景),可关闭(前后端分离)
- 内容安全策略(CSP)建议
📊 五、监控与运维
-
Actuator 监控端点
- 健康检查
/actuator/health - 信息
/actuator/info - 指标
/actuator/metrics - 堆栈追踪
/actuator/threaddump - 生产建议:关闭敏感端点,启用 HTTPS
- 健康检查
-
指标收集与监控
- 集成 Micrometer + Prometheus + Grafana
- 自定义指标:
Counter、Gauge、Timer
-
应用生命周期管理
ApplicationRunner/CommandLineRunner执行启动后逻辑- 关闭钩子:优雅停机(
server.shutdown=graceful)
🔄 六、异步与消息
-
异步任务
@EnableAsync+@Async注解- 自定义线程池:
TaskExecutor
-
定时任务
@EnableScheduling+@Scheduled- 支持 cron 表达式、固定延迟、固定速率
-
消息队列集成
- RabbitMQ:
@RabbitListener、AmqpTemplate - Kafka:
@KafkaListener、KafkaTemplate - RocketMQ(通过 Spring Cloud Stream 或 Alibaba SDK)
- RabbitMQ:
☁️ 七、云原生与微服务
-
Spring Cloud 集成
- 服务注册与发现:Nacos / Eureka
- 配置中心:Nacos Config / Spring Cloud Config
- 服务调用:OpenFeign / RestTemplate + LoadBalancer
- 熔断限流:Sentinel / Resilience4j
- 网关:Spring Cloud Gateway
- 链路追踪:Sleuth + Zipkin / SkyWalking
-
Docker 化部署
- 构建镜像:
Dockerfile多阶段构建 - 分层 JAR 提升构建效率
- 构建镜像:
-
Kubernetes 部署
- 健康探针:
livenessProbe、readinessProbe映射到 Actuator - 配置外置:ConfigMap + Secret
- 健康探针:
🧪 八、测试支持
-
单元测试
@SpringBootTest@DataJpaTest、@WebMvcTest等切片测试- MockMvc 进行 Web 层测试
- 使用
@MockBean模拟依赖
-
测试配置隔离
- 使用
@TestPropertySource或@ActiveProfiles("test")
- 使用
🚀 九、高级特性(进阶)
-
条件化 Bean 注册
@ConditionalOnClass、@ConditionalOnMissingBean等
-
事件驱动模型
ApplicationEventPublisher发布事件@EventListener监听事件
-
SPI 扩展机制
- 自定义
ApplicationContextInitializer、FailureAnalyzer
- 自定义
-
GraalVM 原生镜像(Native Image)
- 使用 Spring Native 编译为原生可执行文件
- 启动速度极快(毫秒级),内存占用低
-
虚拟线程(Virtual Threads)支持
- Java 21+ 下启用 Project Loom
spring.threads.virtual.enabled=true(Spring Boot 3.2+)- 极大提升并发吞吐量
✅ 总结:Spring Boot 核心价值
| 能力 | 说明 |
|---|---|
| 约定优于配置 | 减少样板代码,快速启动项目 |
| 内嵌容器 | 无需外部部署,独立运行 |
| 自动装配 | 智能加载 Bean,降低耦合 |
| 生产就绪 | 内置监控、健康检查、指标暴露 |
| 生态丰富 | 无缝集成 Spring Cloud、Security、Data 等 |
掌握以上知识点,即可胜任绝大多数基于 Spring Boot 的企业级开发与架构工作。建议结合实际项目,逐步深入理解各模块原理与最佳实践。
