1. 工厂模式(Factory Pattern)
应用场景:
- BeanFactory 和 ApplicationContext:Spring 中的
BeanFactory
和ApplicationContext
都是工厂模式的实现,负责创建和管理 Bean 对象。 - FactoryBean:用于创建复杂的 Bean。
FactoryBean
本身是一个 Bean,但它生产的 Bean 是另一个类型的对象。
2. 单例模式(Singleton Pattern)
应用场景:
- 默认 Bean Scope:Spring 中的 Bean 默认是单例的,即每个容器中只存在一个 Bean 实例,整个应用程序共享这个实例。可以通过
@Scope
注解来指定其他作用域。
3. 代理模式(Proxy Pattern)
应用场景:
- AOP(面向切面编程):Spring AOP 使用代理模式来实现横切关注点(如事务管理、日志记录、权限控制等)。Spring AOP 可以使用 JDK 动态代理或 CGLIB 代理来创建代理对象。
- 事务管理:Spring 的事务管理依赖于 AOP 代理,通过代理对象来管理事务的开始、提交和回滚。
4. 模板方法模式(Template Method Pattern)
应用场景:
- JdbcTemplate 和其他模板类:Spring 提供了一系列的模板类(如
JdbcTemplate
、RestTemplate
等),这些类使用模板方法模式将固定的操作步骤封装起来,并允许用户通过回调函数来实现具体的操作逻辑。
5. 依赖注入模式(Dependency Injection Pattern)
应用场景:
- IoC 容器:Spring 的核心就是 IoC(控制反转)容器,通过依赖注入模式将对象的创建和依赖关系管理交给容器,从而实现对象之间的松耦合。
6. 策略模式(Strategy Pattern)
应用场景:
- 事务管理:Spring 的事务管理器(如
DataSourceTransactionManager
、JpaTransactionManager
等)使用策略模式来定义不同的事务管理策略,并在运行时选择具体的策略。 - 任务执行器:Spring 提供了多种任务执行器(如
ThreadPoolTaskExecutor
、SimpleAsyncTaskExecutor
等),可以在运行时根据需求选择不同的任务执行策略。
7. 观察者模式(Observer Pattern)
应用场景:
- 事件机制:Spring 的事件机制使用观察者模式,通过
ApplicationEvent
和ApplicationListener
实现事件发布和订阅。事件源发布事件后,所有订阅该事件的监听器会被通知。
8. 适配器模式(Adapter Pattern)
应用场景:
- Spring MVC:在 Spring MVC 中,
HandlerAdapter
用于将不同类型的请求处理器(如控制器)适配到统一的处理接口上,使得 Spring MVC 可以处理多种类型的请求处理器。 - 事务管理:Spring 的事务抽象使用适配器模式将各种事务管理 API(如 JTA、JDBC 等)适配到统一的事务管理接口。
9. 装饰器模式(Decorator Pattern)
应用场景:
- Bean 的增强:Spring 中的 Bean 后处理器(如
BeanPostProcessor
)使用装饰器模式在 Bean 初始化前后添加额外的功能,比如属性注入、代理创建等。
10. 责任链模式(Chain of Responsibility Pattern)
应用场景:
- Spring Security:Spring Security 中的过滤器链使用责任链模式,将多个过滤器按顺序连接起来,形成一个请求处理链,每个过滤器处理完请求后传递给下一个过滤器。