Skip to content
极高进阶

一句话答案

Spring 大量应用设计模式:工厂(BeanFactory)、单例(Bean 默认)、代理(AOP)、模板方法(JdbcTemplate)、观察者(事件)、责任链(Filter)。

核心要点

Spring 是设计模式的集大成者,几乎每个核心组件都能找到经典模式的影子:

设计模式Spring 中的体现说明
工厂模式BeanFactoryApplicationContextIoC 容器本身就是一个大工厂,通过配置/注解创建并管理 Bean
单例模式Bean 默认作用域 singletonSpring Bean 默认单例,由容器保证唯一性(非传统私有构造函数方式)
代理模式Spring AOP(JDK 动态代理 / CGLIB)@Transactional@Async@Cacheable 等注解的底层实现 → 详见 Module 07
模板方法模式JdbcTemplateRedisTemplateRestTemplate定义操作骨架(获取连接→执行→释放资源),用户只需传入具体 SQL/操作逻辑
观察者模式ApplicationEvent + ApplicationListener / @EventListenerSpring 事件机制,发布-订阅模型
策略模式Resource 接口(ClassPathResource/UrlResource等)根据不同前缀自动选择资源加载策略
适配器模式HandlerAdapter(Spring MVC)不同类型的 Controller(注解式、实现接口式)通过适配器统一调用
装饰器模式HttpServletRequestWrapper对原始 Request 进行包装增强
责任链模式Spring Security 过滤器链多个 Filter 按顺序处理请求,每个 Filter 决定是否放行
建造者模式BeanDefinitionBuilderUriComponentsBuilder链式构建复杂对象

面试时重点讲 3-4 个: 工厂(BeanFactory)、代理(AOP)、模板方法(JdbcTemplate)、观察者(Event),每个都能展开一两句说清楚。

二、创建型模式

追问与易错

追问方向:

  • 策略模式体现在哪?
  • 为什么说 Spring 是设计模式典范?
  • DispatcherServlet 用了哪些模式?

易错点:

  • ❌ 只知道单例和工厂——至少说出 5-6 种
  • ❌ 设计模式是理论不用学——Spring 源码处处是

💡 记忆锚点

Spring是一座设计模式博物馆:BeanFactory是工厂车间,Bean默认单例是独生子女政策,AOP代理是明星经纪人,JdbcTemplate是填空卷模板,Event是广播站,Filter链是机场安检流水线。面试讲3-4个即可镇场。