看过源码吗?说下 Spring 由哪些重要的模块组成?
Spring
Spring框架是一个庞大的生态系统,包含多个模块,每个模块都为不同的功能提供支持。以下是Spring的主要模块及其职责:
├── Core Container(核心容器)
│ ├── Spring-core
│ ├── Spring-beans
│ ├── Spring-context
│ └── Spring-expression(SpEL)
│
├── AOP
│ ├── Spring-aop
│ └── Spring-aspects(AspectJ集成)
│
├── Data Access / Integration
│ ├── Spring-jdbc
│ ├── Spring-tx(事务)
│ ├── Spring-orm(Hibernate/JPA集成)
│ └── Spring-data(不是Spring核心,但生态重要)
│
├── Web
│ ├── Spring-web
│ ├── Spring-webmvc(SpringMVC)
│
├── Test
│ └── Spring-test
1️. Spring-core & Spring-beans
核心功能:IoC 容器实现
-
BeanFactory、ApplicationContext
-
Bean 定义、生命周期管理、依赖注入
-
提供了反射、工具类、类型转换、资源加载等底层支持
是 Spring 的基础,所有功能的核心
小结:
2. Spring-context
应用上下文容器(ApplicationContext)
-
支持国际化、事件发布、环境变量、JavaConfig 等
-
支持注解:@Component、@Service、@Repository、@Autowired 等
-
也包括对 AOP、Web、JPA、缓存等模块的集成入口
小结:
3. Spring-expression(SpEL)
Spring 表达式语言
支持在注解或配置中写表达式:
@Value("#{user.age > 18 ? 'adult' : 'teen'}")
用于动态属性注入、条件判断等
4. Spring-aop & Spring-aspects
面向切面编程(AOP)模块
-
支持声明式事务、日志、权限控制等横切逻辑
-
核心接口有:Advice、Pointcut、Advisor、ProxyFactory
-
可集成 AspectJ 语法增强
5. Spring-jdbc / Spring-tx / Spring-orm
数据访问支持模块
-
Spring-jdbc:简化 JDBC 操作
-
Spring-tx:统一事务抽象,支持声明式事务管理
-
Spring-orm:与 JPA、Hibernate、MyBatis 等集成
小结
- SpringBean的生命周期
- Spring 如何解决循环依赖?
- Spring IOC源码解析
- Spring 事务
- Spring的拦截器和过滤器的区别
- SpringMVC的执行过程
- Spring 如何解决循环依赖?
Spring Boot
├── Spring-boot
│ ├── Spring-boot-autoconfigure 自动配置核心模块
│ ├── Spring-boot-starter-parent 统一依赖管理(继承关系)
│ ├── Spring-boot-starters 一系列启动器(starter-*)
│ ├── Spring-boot-actuator 健康检查 / 监控接口
│ ├── Spring-boot-loader 可执行 JAR 支持
│ └── Spring-boot-devtools 热部署
小结
Spring Cloud
├── Spring-cloud-commons 公共依赖,服务发现/负载均衡抽象
├── Spring-cloud-netflix Netflix 技术集成(Eureka、Ribbon、Hystrix)
├── Spring-cloud-openfeign 声明式 REST 调用
├── Spring-cloud-config 分布式配置中心
├── Spring-cloud-gateway API 网关
├── Spring-cloud-stream 消息驱动微服务(Kafka/RabbitMQ)
├── Spring-cloud-bus 消息总线(配置刷新)
├── Spring-cloud-alibaba 阿里生态(Nacos、Sentinel 等)
├── Spring-cloud-sleuth 链路追踪(Zipkin 集成)
├── Spring-cloud-loadbalancer Spring Cloud 自带的负载均衡器(替代 Ribbon)