Spring中常见的设计模式

Spring框架是一个庞大的生态系统,设计模式的应用广泛分布在其各个模块中。以下是针对你提到的设计模式,在Spring源码中的具体应用位置:

  • 单例模式(Singleton Pattern)

    • org.springframework.beans.factory.support.DefaultListableBeanFactory类中,通过getBean方法获取Bean时,默认情况下会从缓存中返回同一个实例。
    • org.springframework.context.support.AbstractApplicationContext也使用了单例模式来管理应用程序上下文。
  • 工厂模式(Factory Pattern)

    • org.springframework.beans.factory.BeanFactory接口定义了Bean的创建规范,而DefaultListableBeanFactory是其默认实现之一。
    • org.springframework.beans.factory.support.AbstractBeanFactory提供了创建Bean的基本逻辑,并且可以被子类扩展以支持不同的Bean创建策略。
  • 代理模式(Proxy Pattern)

    • AOP相关的代理机制主要在org.springframework.aop.framework包下实现,例如JdkDynamicAopProxy用于JDK动态代理,CglibAopProxy用于CGLIB代理。
    • org.springframework.transaction.interceptor.TransactionProxyFactoryBean为事务管理提供代理支持。
  • 装饰器模式(Decorator Pattern)

    • org.springframework.security.config.method.InterceptMethodsBeanDefinitionDecorator类中,实现对 BeanDefinition 的装饰,添加安全检查逻辑,它扩展了 BeanDefinitionDecorator 接口,并实现了对方法级别的安全拦截,在不改变原有 BeanDefinition 结构的情况下,动态地添加了安全相关的元数据和行为。
  • 模板方法模式(Template Method Pattern)

    • org.springframework.jdbc.core.JdbcTemplateorg.springframework.web.client.RestTemplate等类都遵循了模板方法模式,它们定义了一组操作数据库或进行HTTP请求的基础步骤,允许用户通过继承或配置自定义某些特定行为。
  • 观察者模式(Observer Pattern)

    • org.springframework.context.ApplicationEventPublisher接口及其默认实现ApplicationEventMulticaster实现了事件发布与监听的功能。
    • org.springframework.context.event.EventListenerMethodProcessor负责处理带有@EventListener注解的方法,使其成为事件监听器。
  • 适配器模式(Adapter Pattern)

    • 在MVC框架中,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter将不同类型的控制器适配成统一接口供前端控制器调用。
  • 策略模式(Strategy Pattern)

    • 事务管理方面,org.springframework.transaction.PlatformTransactionManager定义了一个事务管理策略接口,不同的实现如DataSourceTransactionManagerJtaTransactionManager提供了不同的事务处理方式。
  • 责任链模式(Chain of Responsibility Pattern)

    • 基于org.springframework.web.servlet.HandlerInterceptor类的实现构成了一个拦截器链,用于在请求处理的不同阶段(如预处理、后处理、完成处理)插入额外的逻辑。
    • HandlerInterceptorAdapter 提供了默认实现,开发者可以通过继承该类来创建自定义拦截器。
    • HandlerExecutionChain 类管理这些拦截器的执行顺序,并确保每个拦截器都能按需处理请求。
    • SecurityFilterChain 是Spring Security中使用责任链模式的一个典型例子。它由一系列 Filter 组成,负责处理安全相关的任务,如认证、授权等。
相关推荐
一只小阿乐12 分钟前
java 语法学习 1
java·开发语言·学习
码匠许师傅17 分钟前
【设计模式精讲】13.装饰器模式(Decorator)
c++·设计模式·uml·装饰器模式
2601_9620739719 分钟前
苍穹外卖-day07(Spring Cache & 购物车业务逻辑)
java·后端·spring
顶点多余22 分钟前
算法哪些事儿---2
java·开发语言
xixiaoyunya1 小时前
Redis 缓存一致性方案深度对比:从理论到工程落地
redis·spring·缓存
深入云栈1 小时前
CompleteFuture VS CompletableFuture:Netty 为何自研 Future
java·架构
choumou_M1 小时前
SpringBoot_7:用户资源的上传与修改
java·spring boot·后端
user_admin_god2 小时前
一体化数据归集接口详细设计说明
java·大数据·spring boot·后端·spring
LlmCraft|大模型工程实践2 小时前
08. Docker Compose 一键编排:多容器应用的指挥家
java·spring cloud·eureka
珍珠先生2 小时前
第14章 设计模式入门:单例、工厂、建造者与代理
java