请列举你在使用 Spring 框架过程中接触到的设计模式,并简要说明它们各自在 Spring 中的典型应用场景。
考察说明
考查候选人对 Spring 框架底层实现中设计模式的理解与应用能力。
回答思路
- 【回答框架 1】Spring 中广泛使用了工厂模式,例如 BeanFactory 和 ApplicationContext 负责创建和管理 Bean,将对象的创建与使用解耦,用户通过配置或注解声明依赖,由容器统一实例化。
- 【回答框架 2】代理模式在 Spring AOP 中体现明显,通过 JDK 动态代理或 CGLIB 代理为目标方法织入横切逻辑,如事务管理、日志记录,使业务代码保持纯净。
- 【回答框架 3】单例模式是 Spring Bean 默认作用域,容器内每个 Bean 默认只有一个实例,通过三级缓存解决循环依赖,保证全局唯一访问点。
- 【回答框架 4】模板方法模式体现在 JdbcTemplate、RestTemplate 等模板类中,固定算法骨架如连接获取、异常处理,将变化部分交给回调接口,简化使用流程。
- 【回答框架 5】观察者模式应用于事件机制,ApplicationEvent 与 ApplicationListener 配合实现发布订阅,容器发布事件后,监听器异步或同步响应,实现模块间解耦。
- 【关键点 1】工厂模式:BeanFactory 统一管理 Bean 生命周期与依赖注入。
- 【关键点 2】代理模式:AOP 基于动态代理实现横切逻辑织入。
- 【关键点 3】单例模式:默认 Bean 作用域,容器内全局唯一实例。
- 【关键点 4】模板方法:JdbcTemplate 等封装固定流程,回调定制变化。
- 【关键点 5】观察者模式:事件发布订阅机制,实现解耦。
- 【易错点 1】混淆单例 Bean 与单例模式,Bean 的单例指每个容器内唯一,而非全局唯一,且可能存在多实例配置。
- 【易错点 2】模板方法模式需要理解回调接口的作用,不能简单认为是策略模式或普通继承。
- 【易错点 3】观察者模式中事件处理默认同步,除非显式配置异步,否则易误解为并行处理。