在 Spring 框架中,具体使用了哪些经典设计模式?请列举并简述典型应用场景。
考察说明
考查候选人是否熟悉 Spring 框架中常见设计模式的实际应用,并能结合具体组件说明其作用。
回答思路
- 【回答框架 1】工厂模式:Spring 的 BeanFactory 和 ApplicationContext 是工厂模式的典型实现,负责创建和管理对象,将对象的创建与使用解耦。
- 【回答框架 2】单例模式:Spring 容器默认以单例方式管理 Bean,确保在容器内每个 Bean 只有一个实例,减少创建开销和内存占用。
- 【回答框架 3】代理模式:AOP 基于动态代理实现,对目标方法进行增强,常用于事务管理、日志等横切逻辑,无需修改原业务代码。
- 【回答框架 4】模板方法模式:JdbcTemplate、RestTemplate 等封装了固定流程,子类或回调接口提供可变逻辑,简化了资源管理和异常处理。
- 【回答框架 5】观察者模式:Spring 事件机制(ApplicationEvent 和 ApplicationListener)允许组件间解耦通信,通过发布事件驱动异步处理。
- 【关键点 1】工厂模式体现在 BeanFactory 和 ApplicationContext 的 Bean 创建。
- 【关键点 2】单例模式是 Spring Bean 默认作用域,注意状态安全。
- 【关键点 3】代理模式支持 AOP,有 JDK 动态代理和 CGLIB 两种方式。
- 【关键点 4】模板方法模式简化了数据库、HTTP 等操作。
- 【关键点 5】观察者模式通过事件监听实现解耦。
- 【易错点 1】误以为全部 Bean 都是单例,但可通过注解指定原型等其他作用域。
- 【易错点 2】忽略单例 Bean 的线程安全问题,状态可变时需特别处理。
- 【易错点 3】将模板方法模式与策略模式混淆,需注意区分固定骨架与算法族的替换。