首页 > 其他分享 >Spring框架中都用到了哪些设计模式 ?

Spring框架中都用到了哪些设计模式 ?

时间:2022-11-14 13:25:26浏览次数:42  
标签:null Spring 用到 beanName 模式 singletonObject 设计模式 方法

1.简单工厂模式

简单工厂模式的本质就是一个工厂类根据传入的参数,动态的决定实例化哪个类。Spring 中的 BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得 bean 对象。

2.工厂方法模式

应用程序将对象的创建及初始化职责交给工厂对象,工厂 Bean。定义工厂方法,然后通过 config.xml 配置文件,将其纳入 Spring 容器来管理,需要通过 factory-method 指定静态方法名称。

3.单例模式

Spring 用的是双重判断加锁的单例模式,通过 getSingleton 方法从 singletonObjects 中获取 bean。/**

* Return the (raw) singleton object registered under the given name.
* <p>Checks already instantiated singletons and also allows for an early
* reference to a currently created singleton (resolving a circular reference).
* @param beanName the name of the bean to look for
* @param allowEarlyReference whether early references should be created or not
* @return the registered singleton object, or {@code null} if none found
*/
protected Object getSingleton(String beanName, boolean allowEarlyReference) {
Object singletonObject = this.singletonObjects.get(beanName);
if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {
synchronized (this.singletonObjects) {
singletonObject = this.earlySingletonObjects.get(beanName);
if (singletonObject == null && allowEarlyReference) {
ObjectFactory<?> singletonFactory = this.singletonFactories.get(beanName);
if (singletonFactory != null) {
singletonObject = singletonFactory.getObject();
this.earlySingletonObjects.put(beanName, singletonObject);
this.singletonFactories.remove(beanName);
}
}
}
}
return (singletonObject != NULL_OBJECT ? singletonObject : null);
}

4.代理模式

Spring 的 AOP 中,使用的 Advice(通知)来增强被代理类的功能。Spring 实现 AOP 功能的原理就是代理模式(① JDK 动态代理,② CGLIB 字节码生成技术代理。)对类进行方法级别的切面增强。

5.装饰器模式

装饰器模式:动态的给一个对象添加一些额外的功能。

Spring 的 ApplicationContext 中配置所有的 DataSource。这些 DataSource 可能是不同的数据库,然后 SessionFactory 根据用户的每次请求,将 DataSource 设置成不同的数据源,以达到切换数据源的目的。

在 Spring 中有两种表现:

一种是类名中含有 Wrapper;另一种是类名中含有 Decorator。

6. 观察者模式

定义对象间的一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。Spring 中观察者模式一般用在 listener 的实现。

7.策略模式

策略模式是行为性模式,调用不同的方法,适应行为的变化 ,强调父类的调用子类的特性 。getHandler 是 HandlerMapping 接口中的唯一方法,用于根据请求找到匹配的处理器。

8.模板方法模式

Spring JdbcTemplate 的 query 方法总体结构是一个模板方法+回调函数,query 方法中调用的 execute()是一个模板方法,而预期的回调 doInStatement(Statement state)方法也是一个模板方法。

标签:null,Spring,用到,beanName,模式,singletonObject,设计模式,方法
From: https://www.cnblogs.com/qian-fen/p/16888729.html

相关文章

  • spring boot 微服务在进行数据库操作时总是报错Connections reset
    在前端对后台进行数据请求时,访问二,三次后台服务器就报Connectionreset必须重启后才能进行再次访问。最后发现在配置文件中添加如下:spring:r2dbc:pool:ma......
  • rocketMq springboot2接入配置
    rocketmq的接入配置。 引入jar包<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId></dependen......
  • springcloud
    springcloud五大组件:1、Eureka实现服务治理;关键注解 @EnableEurekaServer @EnableEurekaClient 作用:实现服务治理(服务注册与发现)简介:SpringCloud......
  • logback-spring.xml日志配置
    遇到任何事情,可以放弃,但是永远要有面对的勇气引入对应pom依赖<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spr......
  • 源码学习之Spring容器创建原理
    1前言众所周知,Spring可以帮我们管理我们需要的bean。在我们需要用到这些bean的时候,可以很方便的获取到它,然后进行一系列的操作。比如,我们定义一个beanMyTestBeanpubliccl......
  • Spring Boot + Flowable 快速实现工作流,So Easy!
    总览使用flowable自带的flowable-ui制作流程图使用springboot开发流程使用的接口完成流程的业务功能一、flowable-ui部署运行flowable-6.6.0运行官方demo参考文档:​​http......
  • 源码学习之Spring容器创建原理
    1前言众所周知,Spring可以帮我们管理我们需要的bean。在我们需要用到这些bean的时候,可以很方便的获取到它,然后进行一系列的操作。比如,我们定义一个beanMyTestBeanpubli......
  • 设计模式之【建造者模式】使用java建造者模式优雅创建对象
    文章目录​​什么是建造者模式​​​​一步一步认清建造者模式​​​​1、传统方式创建对象​​​​2、建造者模式创建对象​​​​建造者模式优缺点​​​​建造者模式适用......
  • 外网访问内网SpringBoot【免费内网穿透】
    在本地搭建的SpringBoot项目,在内网能够正常访问,想要在外网环境下也能够访问,可以做内网穿透来实现,不需要公网IP,也不需要进入到路由器配置。这里主要介绍通过cpolar内网穿透......
  • Spring Boot 整合 HBase
    HBase介绍HBase是一个分布式的、面向列的开源数据库,Hadoop数据库。搭建基于Hadoop和ZK。历史是基于Google的Bigtable、Google文件系统等论文。HBase在Hadoop......