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 组成,负责处理安全相关的任务,如认证、授权等。
相关推荐
饭小猿人3 分钟前
Android 腾讯X5WebView如何禁止系统自带剪切板和自定义剪切板视图
android·java
Advancer-33 分钟前
第二次蓝桥杯总结(上)
java·算法·职场和发展·蓝桥杯
\xin44 分钟前
pikachu自编SQL(POST)
java·数据库·sql
一行代码一行诗++1 小时前
注释是什么和注释该怎么写(C语言)
java·前端·javascript
空中海1 小时前
Spring Cloud 专家级面试题库
spring·spring cloud·面试
JAVA面经实录9171 小时前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain
Drug1 小时前
Struts2 从入门到放弃?不,这些核心知识你依然需要掌握
java
Slow菜鸟1 小时前
Codex CLI 教程(五)| AI 驱动项目从零到一:面向 Java 全栈工程师打造个人 ECC(V2版)
java·开发语言·人工智能
月落归舟2 小时前
java基础之拷贝、单例
java·单例·拷贝
鬼蛟2 小时前
什么是 Git
java