看过源码吗?说下 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、缓存等模块的集成入口

小结:

  1. Spring IOC源码解析

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 等集成

小结

  1. SpringBean的生命周期
  2. Spring 如何解决循环依赖?
  3. Spring IOC源码解析
  4. Spring 事务
  5. Spring的拦截器和过滤器的区别
  6. SpringMVC的执行过程
  7. 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         热部署

小结

  1. SpringBoot的自动装配原理

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)
posted @ 2024-12-15 20:52  Eiffelzero  阅读(318)  评论(0)    收藏  举报