Spring Boot核心知识点全解析 - 实践


以下是 Spring Boot的核心知识点体系,涵盖其主要功能模块、常用技术栈集成以及生产实践中的关键能力,适合用于系统学习、面试准备或项目架构设计参考。


一、核心基础

  1. 自动配置(Auto-configuration)

    • 基于 @Conditional 注解实现条件化装配
    • spring.factories(旧)与 spring-autoconfigure-metadata.json(新)机制
    • 如何自定义 Starter 和自动设置类
  2. 起步依赖(Starter Dependencies)

    • 简化 Maven/Gradle 依赖管理
    • 常见 Starter:spring-boot-starter-webspring-boot-starter-data-jpaspring-boot-starter-security
  3. 主程序入口与启动流程

    • @SpringBootApplication 注解解析(@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
    • SpringApplication.run() 执行流程:
      • 应用上下文创建
      • 初始化器(ApplicationContextInitializer)
      • 监听器(ApplicationListener)
      • Web 类型推断
      • 自动配置执行
  4. 外部化部署(Externalized Configuration)

    • 配置文件优先级:application.properties/yml → 命令行参数 → 环境变量 → profile-specific 文件
    • 多环境配置:application-{profile}.yml
    • 使用 @Value@ConfigurationProperties 绑定属性
    • 配置加密(如 Jasypt)
  5. Profile 管理

    • 使用 @Profile("dev") 控制 Bean 加载
    • application.yml 中分环境配置数据源、日志级别等

️ 二、Web 研发支持

  1. 嵌入式 Web 容器

    • 默认使用 Tomcat,可切换为 Jetty 或 Undertow
    • 容器配置:端口、上下文路径、连接数等
  2. RESTful API 开发

    • @RestController@RequestMapping@GetMapping 等注解
    • 参数绑定:@RequestParam@PathVariable@RequestBody
    • 数据校验:@Valid + javax.validation
  3. 静态资源处理

    • 默认映射 /static/public/resources/META-INF/resources
    • 自定义资源路径和缓存策略
  4. 拦截器与过滤器

    • 实现 HandlerInterceptor 或继承 OncePerRequestFilter
    • 注册方式:WebMvcConfigurer.addInterceptors()
  5. 异常统一处理

    • 使用 @ControllerAdvice + @ExceptionHandler
    • 返回标准化错误响应结构(如 RFC 7807 Problem Details)
  6. 跨域支撑(CORS)

    • 全局配置:实现 WebMvcConfigurer.addCorsMappings()
    • 局部配置:@CrossOrigin 注解

三、数据访问

  1. Spring Data JPA / MyBatis 集成

    • JpaRepository 接口方法命名规则
    • 自定义查询:@Query@Modifying
    • 分页与排序:PageablePage<T>
  2. 事务管理

    • 声明式事务:@Transactional
    • 传播行为、隔离级别、回滚规则
    • 注意事项:自调用失效、异常类型控制
  3. 数据库连接池

    • 默认 HikariCP(高性能)
    • 配置最大连接数、超时时间、健康检查
  4. Flyway / Liquibase 数据库迁移

    • 版本化 SQL 脚本管理
    • 启动时自动执行迁移
  5. Redis 缓存集成

    • @Cacheable@CachePut@CacheEvict
    • 自定义 KeyGenerator 和 CacheManager
    • RedisTemplate 与 StringRedisTemplate 使用

四、安全与权限

  1. Spring Security 集成

    • 认证(Authentication)与授权(Authorization)
    • 表单登录、JWT、OAuth2 / OpenID Connect
    • 方法级安全:@PreAuthorize@Secured
  2. CSRF、XSS 防护

    • 默认开启 CSRF(表单场景),可关闭(前后端分离)
    • 内容安全策略(CSP)建议

五、监控与运维

  1. Actuator 监控端点

    • 健康检查 /actuator/health
    • 信息 /actuator/info
    • 指标 /actuator/metrics
    • 堆栈追踪 /actuator/threaddump
    • 生产建议:关闭敏感端点,启用 HTTPS
  2. 指标收集与监控

    • 集成 Micrometer + Prometheus + Grafana
    • 自定义指标:CounterGaugeTimer
  3. 应用生命周期管理

    • ApplicationRunner / CommandLineRunner 执行启动后逻辑
    • 关闭钩子:优雅停机(server.shutdown=graceful

六、异步与消息

  1. 异步任务

    • @EnableAsync + @Async 注解
    • 自定义线程池:TaskExecutor
  2. 定时任务

    • @EnableScheduling + @Scheduled
    • 支持 cron 表达式、固定延迟、固定速率
  3. 消息队列集成

    • RabbitMQ:@RabbitListenerAmqpTemplate
    • Kafka:@KafkaListenerKafkaTemplate
    • RocketMQ(依据 Spring Cloud Stream 或 Alibaba SDK)

☁️ 七、云原生与微服务

  1. Spring Cloud 集成

    • 服务注册与发现:Nacos / Eureka
    • 配置中心:Nacos Config / Spring Cloud Config
    • 服务调用:OpenFeign / RestTemplate + LoadBalancer
    • 熔断限流:Sentinel / Resilience4j
    • 网关:Spring Cloud Gateway
    • 链路追踪:Sleuth + Zipkin / SkyWalking
  2. Docker 化部署

    • 构建镜像:Dockerfile 多阶段构建
    • 分层 JAR 提升构建效率
  3. Kubernetes 部署

    • 健康探针:livenessProbereadinessProbe 映射到 Actuator
    • 配置外置:ConfigMap + Secret

八、测试支持

  1. 单元测试

    • @SpringBootTest
    • @DataJpaTest@WebMvcTest 等切片测试
    • MockMvc 进行 Web 层测试
    • 使用 @MockBean 模拟依赖
  2. 测试配置隔离

    • 使用 @TestPropertySource@ActiveProfiles("test")

九、高级特性(进阶)

  1. 条件化 Bean 注册

    • @ConditionalOnClass@ConditionalOnMissingBean
  2. 事件驱动模型

    • ApplicationEventPublisher 发布事件
    • @EventListener 监听事件
  3. SPI 扩展机制

    • 自定义 ApplicationContextInitializerFailureAnalyzer
  4. GraalVM 原生镜像(Native Image)

    • 使用 Spring Native 编译为原生可执行文件
    • 启动速度极快(毫秒级),内存占用低
  5. 虚拟线程(Virtual Threads)支持

    • Java 21+ 下启用 Project Loom
    • spring.threads.virtual.enabled=true(Spring Boot 3.2+)
    • 极大提升并发吞吐量

✅ 总结:Spring Boot 核心价值

能力说明
约定优于配置减少样板代码,快速启动项目
内嵌容器无需外部部署,独立运行
自动装配智能加载 Bean,降低耦合
生产就绪内置监控、健康检查、指标暴露
生态丰富无缝集成 Spring Cloud、Security、Data 等

掌握以上知识点,即可胜任绝大多数基于 Spring Boot 的企业级开发与架构工作。建议结合实际项目,逐步深入理解各模块原理与最佳实践。

posted on 2025-11-22 22:16  ljbguanli  阅读(0)  评论(0)    收藏  举报