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 组成,负责处理安全相关的任务,如认证、授权等。
相关推荐
Felix_XXXXL1 分钟前
Spring Security安全框架原理与实战
java·后端
一抓掉一大把22 分钟前
秒杀-StackExchangeRedisHelper连接单例
java·开发语言·jvm
升鲜宝供应链及收银系统源代码服务22 分钟前
升鲜宝生鲜配送供应链管理系统--- 《多语言商品查询优化方案(Redis + 翻译表 + 模糊匹配)》
java·数据库·redis·bootstrap·供应链系统·生鲜配送·生鲜配送源代码
青山的青衫32 分钟前
【JavaWeb】Tlias后台管理系统
java·web
蒟蒻的工具人38 分钟前
SSE实时推送订单状态
java·eventsource·sse协议
小蒜学长42 分钟前
springboot基于Java的校园导航微信小程序的设计与实现(代码+数据库+LW)
java·spring boot·后端·微信小程序
王元_SmallA1 小时前
IDEA + Spring Boot 的三种热加载方案
java·后端
小苏兮1 小时前
【把Linux“聊”明白】编译器gcc/g++与调试器gdb/cgdb:从编译原理到高效调试
java·linux·运维·学习·1024程序员节
Java天梯之路1 小时前
04 数据类型转换
java
neoooo1 小时前
⚙️ Spring Boot × @RequiredArgsConstructor:写出最干净的依赖注入代码
spring boot·后端·spring