Spring 技术栈
#markmap
Spring 是 Java 生态中最核心的应用框架,从 IoC 容器到微服务架构,形成完整的技术栈。SpringWeb 整理了《Spring 实战》的核心内容,覆盖从容器原理到 Spring Cloud 的全景视图。
适用场景
企业级 Web 应用开发、微服务架构、RESTful API 服务、分布式系统、云原生应用。
核心机制
IoC 容器与依赖注入
Spring Framework 提供 IoC 容器和依赖注入,是整个 Spring 生态的基石。SpringFramework 通过工厂模式和反射机制实现对象的创建和管理,SpringAOP 基于动态代理实现面向切面编程,将横切关注点与业务逻辑分离。
事务管理
Spring 的事务管理通过 @Transactional 注解实现声明式事务,支持多种传播行为和隔离级别。Spring事务 详细介绍了事务的解析机制、代理生成流程和失效场景。
Web 开发
SpringMVC 是基于 Servlet 的 Web 框架,核心是 DispatcherServlet。它通过 HandlerMapping 查找处理器、HandlerAdapter 执行处理器、ViewResolver 渲染视图,完成请求的完整处理流程。
SpringWebFlux 是 Spring 5 引入的响应式 Web 框架,Flux 和 Mono 是响应式流的核心类型,适用于 IO 密集型和高并发场景。
快速开发
Spring Boot
SpringBoot 通过自动配置、Starter 依赖和内嵌容器解决了繁琐配置的问题。Actuator 提供生产就绪的监控端点,SpringBootActuator 详细介绍了健康检查、指标采集和自定义端点。
测试支持
SpringBootTesting 提供全面的测试支持,通过 @SpringBootTest、@WebMvcTest、@DataJpaTest 等注解实现不同层次的测试覆盖。
安全与配置
安全框架
SpringSecurity 通过过滤器链实现安全控制,支持表单登录、短信验证码、OAuth2 等多种认证方式。SpringSecurityOAuth2 实现了 OAuth2 授权框架,支持授权码、密码、客户端凭证等授权模式。
配置管理
Spring配置管理外部化 通过 Properties、Profiles 和 Config Server 实现配置的外部化管理。配置优先级从命令行参数到应用内配置逐级递减。
扩展机制
SPI 是 JDK 内置的服务发现机制,Spring 扩展为 spring.factories 文件配置。Dubbo 进一步扩展 SPI,支持自适应扩展、自动激活等高级特性。
常见问题
| 问题 | 解决方案 |
|---|---|
| 事务失效 | @Transactional 非 public 方法;同类内部调用绕过代理;异常被 catch 吞掉;异常类型不匹配 |
| 依赖注入失败 | 检查 @Component/@Service/@Repository 注解;确认组件扫描路径;检查循环依赖 |
| AOP 不生效 | 确认切点表达式;检查 this 调用绕过代理;确认目标类被 Spring 管理 |