Spring中使用的设计模式

devtools/2024/10/19 7:18:31/

单例模式:

在Spring的配置文件中,当我们定义一个Bean而没有指定其作用域时,它默认是单例的。这意味着无论我们多少
次请求这个Bean,Spring都会返回同一个实例。这有助于节省系统资源,因为相同的对象只会被创建一次。

工厂模式:

BeanFactory是Spring中工厂模式的经典实现。它负责根据配置创建并管理Bean的实例。当应用程序需要某个Bean时,它会通过BeanFactory来获取,而不需要直接调用Bean的构造函数。这提高了代码的灵活性和可维护性。

代理模式:

Spring AOP通过代理模式实现了面向切面编程。当一个Bean需要被增强(如添加日志、事务管理等)时,Spring会为这个Bean创建一个代理对象。这个代理对象会拦截对原始Bean的方法调用,并在调用前后添加额外的逻辑。

观察者模式:

Spring的事件机制采用了观察者模式。当一个事件发生时(如某个Bean的状态改变),它可以发布这个事件。其他对此事件感兴趣的Bean(即观察者)可以注册为监听器,并在事件发生时得到通知并执行相应的操作。

模板方法模式:

JdbcTemplate是Spring中模板方法模式的一个典型应用。它提供了一组固定的方法来执行数据库操作(如查询、更新等),但具体的SQL语句和参数由子类或调用者提供。这使得数据库操作更加统一和易于管理。

策略模式:

在Spring中,当我们需要根据不同的条件选择不同的算法或行为时,可以使用策略模式。例如,我们可以定义多个实现同一接口的Bean,然后在运行时根据需求选择使用哪个Bean。这使得代码更加灵活和可扩展。

责任链模式:

AOP通过代理对象实现了对目标对象的增强,当请求到达代理对象时,会按照定义的切面顺序依次执行相关的增强逻辑,这实际上就形成了一个责任链。每个切面都可以看作链中的一个节点,负责处理特定的请求或任务。这些处理器会在Bean的创建或Spring允许开发者定义自己的BeanPostProcessor或BeanFactoryPostProcessor,初始化过程中被依次调用,形成一个处理链。


http://www.ppmy.cn/devtools/125065.html

相关文章

高效微调理解(prompt-tuning,p-tuning v1,p-tuning v2,lora)

高效微调(prompt-tuning,p-tuning v1,p-tuning v2,lora) 1.prompt-tuning: 例子理解;保持原本模型参数不变,通过训练提示词的参数调整prompt,使其与下游任务匹配。 例子…

深度学习+点云实现双目相机物体3D尺寸测量(长、宽、高)

目录 1,深度学习 2,点云 3,双目相机 4,深度学习与点云结合 5,效果展示 1,深度学习 深度学习是机器学习的一个子领域,它基于人工神经网络的学习算法。深度学习模型能够学习数据的多层次表示…

云原生知识点-系统架构师(七十九)

1介绍SOA?介绍ESB? 解析: SOA是面向服务架构,提供ESB总线将各个独立的服务关联起来,解耦各个服务直接关联,通过ESB服务总线把他们关联起来。 ESB服务总线支持不同服务的数据格式统一转换,保证…

架构师知识梳理(八):系统安全

信息安全概念 信息安全包括5个基本要素:机密性、完整性、可用性、可控性与可审查性。 机密性:确保信息不暴露给未授权的实体或进程。完整性:只有得到允许的人才能修改数据,并且能够判别出数据是否已被篡改。可用性:得…

【数据结构】邻接表

一、概念 邻接表是一个顺序存储与链式存储相结合的数据结构,用于描述一个图中所有节点之间的关系。 若是一个稠密图,我们可以选择使用邻接矩阵;但当图较稀疏时,邻接矩阵就显得比较浪费空间了,此时我们就可以换成邻接…

【C语言】使用结构体实现位段

文章目录 一、什么是位段二、位段的内存分配1.位段内存分配规则练习1练习2 三、位段的跨平台问题四、位段的应用五、位段使用的注意事项 一、什么是位段 在上一节中我们讲解了结构体,而位段的声明和结构是类似的,它们有两个不同之处,如下&…

C语言内存管理

内存分布 C代码编译过程 预处理 宏定义展开、头文件展开、条件编译,这里并不会检查语法编译 检查语法,将预处理后文件编译生成汇编文件汇编 将汇编文件生成目标文件(二进制文件)链接 将目标文件链接为可执行程序 进程的内存分布 程序运行起来(没有结…

Go Gin 框架与 HTML 模板学习笔记

文章目录 1. 简介2. 安装与项目结构项目结构: 3. 基本使用3.1 创建基本的 HTTP 服务3.2 创建模板文件3.3 运行程序 4. Gin 模板渲染详解4.1 传递数据 5. 处理复杂数据结构5.1 传递切片数据 6. 静态文件服务7. 模板的高级特性7.1 条件判断7.2 循环语句7.3 自定义模板…