Spring中使用的设计模式

单例模式:

在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,初始化过程中被依次调用,形成一个处理链。

相关推荐
Cyanto13 分钟前
Spring注解IoC与JUnit整合实战
java·开发语言·spring·mybatis
qq_4338889314 分钟前
Junit多线程的坑
java·spring·junit
gadiaola18 分钟前
【SSM面试篇】Spring、SpringMVC、SpringBoot、Mybatis高频八股汇总
java·spring boot·spring·面试·mybatis
写不出来就跑路20 分钟前
WebClient与HTTPInterface远程调用对比
java·开发语言·后端·spring·springboot
Cyanto26 分钟前
深入MyBatis:CRUD操作与高级查询实战
java·数据库·mybatis
麦兜*1 小时前
Spring Boot 集成Reactive Web 性能优化全栈技术方案,包含底层原理、压测方法论、参数调优
java·前端·spring boot·spring·spring cloud·性能优化·maven
天上掉下来个程小白1 小时前
MybatisPlus-06.核心功能-自定义SQL
java·spring boot·后端·sql·微服务·mybatisplus
知了一笑1 小时前
独立开发第二周:构建、执行、规划
java·前端·后端
今天背单词了吗9802 小时前
算法学习笔记:17.蒙特卡洛算法 ——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·笔记·考研·算法·蒙特卡洛算法
Dcs2 小时前
从 C 到 Rust:一位开发者的 `tmux` 全面移植之旅
java