1、代理模式:在AOP和remoting中被用的比较多

2、单例模式:在spring配置文件中定义的bean默认为单例模式

3、模板方法模式:解决代码重复问题

父类定义骨架(共同方法的实现,调用哪些方法及顺序),某些特定方法由子类实现(父类是空方法,子类继承后再重写)

4、前端控制器模式:spring提供了DispatcherServlet来对请求进行分发

5、依赖注入模式:贯穿于BeanFactory和ApplicationContext接口的核心理念

6、工厂模式:

(1)简单工厂:

实现方式:BeanFactory根据传入一个唯一的标识来获得bean对象,由工厂类根据传入的参数动态决定应该创建哪一个产品类

实现原理:

bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中。

容器中bean的实例化阶段:主要通过反射或者CGLIB对bean进行实例化

(2)工厂方法:

实现方式:FactoryBean接口

实现原理:实现了FactoryBean接口的bean是一类叫做factory的bean,特点是spring会在使用getBean()调用获得该bean时,自动调用该bean的getObject()方法。返回的是这个bean.getObject()方法的返回值。

典型例子:spring与mybatis的结合:

<bean  id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" ><bean>

//最终返回的是SqlSessionFactoryBean.getObject()的返回值

7、适配器模式

实现方式:springmvc中的适配器HandlerAdapter

实现过程:dispatcherServlet根据HandlerMapping返回的handler,向HandlerAdapter发起请求,处理handler。HandlerAdapter根据规则找到对应的Handler并让其执行,执行完毕后Handler会向HandlerAdapter返回一个ModelAndView,最后由HandlerAdapter向dispatcherServlet返回一个ModelAndView

8、装饰器模式:

实现方式:类名中包含Wrapper,或者是Decorator,就是装饰器模式

实质:动态地给一个对象添加一些额外的职责,比生成子类更灵活

9、观察者模式

实现方式:spring的事件驱动模型使用的是观察者模式,常用的地方就是listener的实现

具体实现:事件机制的实现包括事件源、事件、事件监听器:

ApplicationEvent抽象类【事件】

ApplicationListener接口【事件监听器】

ApplicationContext接口【事件源】

10、策略模式

实现方式:spring框架的资源访问Resource接口,是具体资源访问策略的抽象,也是所有资源访问类所实现的接口

spring框架中用到了哪些设计模式的更多相关文章

  1. Spring框架中用到的设计模式(转)

    主要参考这篇文章 http://blog.didispace.com/spring-design-partern/

  2. 高强度学习训练第十六天总结: Spring框架中的设计模式

    仔细想了想..没必要重复造轮子. 每天复习啥了就直接CTRL CV了 https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/system-de ...

  3. Spring中用到了哪些设计模式?

    谈谈Spring中都用到了哪些设计模式? JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见.我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是 ...

  4. 面试官:“谈谈Spring中都用到了那些设计模式?”。

    我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star.会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclim ...

  5. Spring中都用到了哪些设计模式

    JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见.我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远.所以,花了 ...

  6. 谈谈Spring中都用到了那些设计模式?

    以下文章来源于微信公众号JavaGuide ,作者:JavaGuide JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见.我在网上搜索了一下关于 Spri ...

  7. 谈谈Spring中都用到了哪些设计模式?

    谈谈Spring中都用到了哪些设计模式? JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见.我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是 ...

  8. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...

  9. spring框架面試題目

    25个经典的Spring面试问答 这是在网上下载的面试题,忘记了出处,如带来不便联系本人立马删除,在这里提供给将要面试的朋友,与大家分享,希望能给您带来帮助! 问题清单: 1. 什么是Spring框架 ...

随机推荐

  1. Python学习小记(5)---Magic Method

    具体见The Python Language Reference 与Attribute相关的有 __get__ __set__ __getattribute__ __getattr__ __setat ...

  2. Spark之RDD本质

    1.在一个完整的数据转换流程里往往涉及到多个具有衍生关系RDD,这些RDD其实是通过逻辑串联来利用装饰器模式层层包装扩展的的一堆对象,这些相邻RDD间必须有继承关系.并且比Java中的装饰器来的更彻底 ...

  3. opencv —— boundingRect、minAreaRect 寻找包裹轮廓的最小正矩形、最小斜矩形

    寻找包裹轮廓的最小正矩形:boundingRect 函数 返回矩阵应满足:① 轮廓上的点均在矩阵空间内.② 矩阵是正矩阵(矩形的边界与图像边界平行). Rect boundingRect(InputA ...

  4. 浅谈 vue-loader---合格前端

    什么是 vue-loader? vue-loader 是一个 webpack 的 loader,它允许你以一种名为单文件组件的格式撰写 Vue 组件. 如何使用? 1. 安装 npm install  ...

  5. vue2.0嵌套组件之间的通信($refs,props,$emit)

    vue的一大特色就是组件化,所以组件之间的数据交互是非常重要,而我们经常使用组件之间的通信的方法有:props,$refs和emit. 初识组件之间的通信的属性和方法 props的使用 子组件使用父组 ...

  6. go 序列化

    序列化 package main import ( "encoding/json" "fmt" ) //结构体 type Monster struct { Na ...

  7. XSStrike工具的安装使用

    0x01简介 XSStrike 是一款用于探测并利用XSS漏洞的脚本 XSStrike目前所提供的产品特性: 对参数进行模糊测试之后构建合适的payload 使用payload对参数进行穷举匹配 内置 ...

  8. 消息总线:Spring Cloud Stream

    最近在学习Spring Cloud的知识,现将消息总线:Spring Cloud Stream 的相关知识笔记整理如下.[采用 oneNote格式排版]

  9. 离线安装PostgreSQL11.6

    因为客户最近有一台CentOS7的虚拟机,但是没有联网,需要安装离线安装PostgreSQL 1.首先去官网下载离线安装包 https://www.postgresql.org/download/ 说 ...

  10. 纪中18日c组模拟赛

    T2 GMOJ2127. 电子表格 (File IO): input:excel.in output:excel.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   ...