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

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

时间:2024-05-23 09:18:21浏览次数:18  
标签:Spring 用到 接口 bean 模式 spring 设计模式

这是一道相对有难度的题目,你不仅要回设计模式,还要知道每个设计模式在Spring中是如何使用 的。

简单工厂模式:Spring中的BeanFactory 就是简单工厂模式的体现。根据传入一个唯一的标识来获得 Bean 对象,但是在传入参数后创建还是传入参数前创建,要根据具体情况来定。

工厂模式:Spring 中的 FactoryBean 就是典型的工厂方法模式,实现了 FactoryBean 接口的 bean 是一类叫做 factory 的 bean。其特点是,spring 在使用 getBean() 调用获得该 bean 时,会自动调 用该 bean 的 getObject() 方法,所以返回的不是 factory 这个 bean,而是这个 bean.getOjbect() 方法的返回值。

单例模式:在 spring 中用到的单例模式有: scope="singleton" ,注册式单例模式,bean 存放于 Map 中。bean name 当做 key,bean 当做 value。

原型模式:在 spring 中用到的原型模式有: scope="prototype" ,每次获取的是通过克隆生成的新 实例,对其进行修改时对原有实例对象不造成任何影响。

迭代器模式:在 Spring 中有个 CompositeIterator 实现了 Iterator,Iterable 接口和 Iterator 接 口,这两个都是迭代相关的接口。可以这么认为,实现了 Iterable 接口,则表示某个对象是可被迭 代的。Iterator 接口相当于是一个迭代器,实现了 Iterator 接口,等于具体定义了这个可被迭代的 对象时如何进行迭代的。

代理模式:Spring 中经典的 AOP,就是使用动态代理实现的,分 JDK 和 CGlib 动态代理。

适配器模式:Spring 中的 AOP 中 AdvisorAdapter 类,它有三个实现: MethodBeforAdviceAdapter、AfterReturnningAdviceAdapter、ThrowsAdviceAdapter。Spring 会根据不同的 AOP 配置来使用对应的 Advice,与策略模式不同的是,一个方法可以同时拥有多个 Advice。Spring 存在很多以 Adapter 结尾的,大多数都是适配器模式。

观察者模式:Spring 中的 Event 和 Listener。spring 事件:ApplicationEvent,该抽象类继承了 EventObject 类,JDK 建议所有的事件都应该继承自 EventObject。spring 事件监听器: ApplicationListener,该接口继承了 EventListener 接口,JDK 建议所有的事件监听器都应该继承 EventListener。

模板模式:Spring 中的 org.springframework.jdbc.core.JdbcTemplate 就是非常经典的模板模式 的应用,里面的 execute 方法,把整个算法步骤都定义好了。 阿里内部资料 责任链模式:DispatcherServlet 中的 doDispatch() 方法中获取与请求匹配的处理器 HandlerExecutionChain,this.getHandler() 方法的处理使用到了责任链模式。 注意:这里只是列举了部分设计模式,其实里面用到了还有享元模式、建造者模式等。

标签:Spring,用到,接口,bean,模式,spring,设计模式
From: https://www.cnblogs.com/Stars-125/p/18207625

相关文章

  • Spring6日志
    JakartaCommonsLoggingAPI是一种Java日志记录抽象层,它允许开发者在运行时插入所需的日志框架,如Log4j、JavaUtilLogging、SLF4J等。该API提供了一个简单的日志记录接口,使得开发者无需关心底层使用的具体日志框架。使用JakartaCommonsLoggingAPI的好处包括:灵......
  • Spring Boot —— Spring Security
    引入依赖Springboot版本2.7.6<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.repo......
  • 【SpringBoot】服务停止数据源的关闭时机
    1 前言微服务中我们会用到数据源,数据源中其实就是管理我们的数据库连接,对于数据库而言,连接数是很珍贵的资源,所以释放无用或者长时间空闲的连接显得很重要。那么对于微服务比如我们的SpringBoot当服务启动的时候会初始化数据源,那么停止的时候,是如何关闭数据源,释放连接的呢?这......
  • 在springboot项目中,打包本地的外部jar包,到运行的jar包中
    1、配置依赖<dependency><groupId>com.genesyslab</groupId><artifactId>genesyslab</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/src/main/re......
  • 设计模式06----桥接模式
    桥接模式(BridgePattern)属于结构型设计模式,用于将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,使得这两层能够独立地扩展。桥接模式通常包含以下角色:抽象化(Abstraction):定义抽象类的接口,维护对实现化对象的引用。细化抽象(RefinedAbstraction):扩展抽象化角色,......
  • springboot开启热部署
    一、依赖在SpringBoot中启用热部署通常涉及使用SpringBootDevTools依赖和配置。以下是如何在SpringBoot项目中启用热部署的步骤:在pom.xml中添加SpringBootDevTools依赖:<dependencies><!--其他依赖--><dependency><groupId>org.springframework.b......
  • springboot中执行完某些逻辑后,才算bean加载完,applicationContext才加载完毕
    核心思想实现InitializingBean接口,重写afterPropertiesSet方法范例代码importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.stereotype.Component;@Slf4j@ComponentpublicclassDemoimplementsI......
  • spring cloud
    什么是SpringCloud?基于SpringBoot的Spring集成应用程序,它利用SpringBoot的开发便利性简化了分布式系统的开发,提供与外部系统的集成。如服务注册与发现、配置中心、负载均衡、断路器、消息总线、数据监控等;换句话说:SpringCloud提供了构建分布式系统所需的“全家桶......
  • 使用winsw 将 spring boot jar包注册称服务
    下载地址:ReleaseWinSWv2.10.3·winsw/winsw·GitHub下载winsw,使用版本WinSWv2.10.3版修改文件名  修改配置<configuration><!--安装成Windows服务后的服务名--><id>nacosConsumer</id><!--显示的服务名称--><name>nacosConsumer</name>&......
  • springboot集成logback-spring.xml日志文件
    logback-spring.xml:<!--Logbackconfiguration.Seehttp://logback.qos.ch/manual/index.html--><configurationscan="true"scanPeriod="10seconds"><springPropertyscope="context"name="logLevel"s......