当前位置: 首页 > article >正文

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 组成,负责处理安全相关的任务,如认证、授权等。

http://www.kler.cn/a/543272.html

相关文章:

  • 栈的简单介绍
  • 为AI聊天工具添加一个知识系统 之99 详细设计之40 Token 之5 函数式编程 :映射契约
  • 【数据库设计】深入理解常见范式
  • ThinkPHP8视图赋值与渲染
  • react 18父子组件通信
  • SpringBoot启动流程简略版
  • Flutter PIP 插件 ---- iOS Video Call
  • python基础入门:6.3异常处理机制
  • 鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践
  • Git与Github远程仓库使用
  • Vue项目能进行哪些性能优化?
  • WPS OFFICE制作多级下拉菜单
  • Java实现模版方法模式
  • LabVIEW无人机飞行状态监测系统
  • 获取 Windows 视频时长的正确方式——Windows Shell API 深度解析
  • Flask Web开发的重要概念和示例
  • 日志2025.2.12
  • OmniManip:以目标为中心的交互基元作为空间约束实现通用机器人操作
  • AI大模型零基础学习(4):私有化部署与企业级应用——打造你的专属智能大脑
  • 人工智能(AI)基础理论知识学习路线
  • HDFS应用-后端存储cephfs-文件存储和对象存储数据双向迁移
  • 自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)
  • 基于 Docker 搭建 Elasticsearch + Kibana 环境
  • uniapp 使用 鸿蒙开源字体
  • IntelliJ IDEA 2024.1.4版无Tomcat配置
  • 在nodejs中使用RabbitMQ(一)安装,使用