自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (3)
  • 收藏
  • 关注

转载 解决Parameter 'xxxList' not found. Available parameters are [Collection,list]

在使用foreach语句时会经常报Parameter ‘ordersList’ not found. Available parameters are [Collection,list]这个错误,造成这个错误的主要原因你的写法错误:请看错误实例mapper接口中List<Orders> selectKeyList(List<Integer> ordersLi...

2019-08-30 20:28:34 43307 2

原创 Spring Boot嵌入式Servlet容器自动配置原理

SpringBoot中是由ServletWebServerFactoryAutoConfiguration来完成对Servlet容器的配置,下面是它的源码解析:首先来分析ServletWebServerFactoryAutoConfiguration类上注解的作用。@Configuration@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)...

2019-08-18 21:20:46 330

原创 Spring Boot定制错误响应

1. SpringBoot默认的错误处理机制浏览器,返回一个默认的错误页面浏览器发送请求的请求头其他客户端,默认响应一个json数据原理SpringBoot中错误处理的类基本都由ErrorMvcAutoConfiguration来配置1. ErrorPageCustomizerErrorMvcAutoConfiguration中有向IOC容器注入ErrorPa...

2019-08-17 22:10:09 221

原创 状态模式

概述在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状态(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻...

2019-08-15 22:50:38 101

原创 访问者模式

定义封装作用与某种数据结构(如List/Set/Map等)中的各元素的操作。它可以使你在不改变各元素的类的前提下,定义作用于这些元素的操作。但需要这些被操纵的元素相对稳定。简而言之,就是专门有个对象来访问某种数据结构的元素,且不改变这些元素。使元素本身与操作分离。访问者模式能把处理方法从数据结构中分离出来,并可以根据需要增加新的处理方法,且不用修改原来的程序代码与数据结构,这提高了程序...

2019-08-15 21:46:54 97

原创 责任链模式

定义使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。简而言之,就是为请求创建一个接收此次请求对象的链,这些对象可处理请求,也可以传递请求,知道没有对象处理该请求为止。web中的过滤器就采用了这种设计模式来处理request请求。类型行为型适用场景一个请求的处理需要多个对象当中...

2019-08-15 18:41:39 80

原创 中介者模式

定义定义一个 封装一组对象如何交互的 对象。主要解决多个对象和类之间的通信复杂度,主要通过一个中介类接受所有消息,然后再进行转发。通过使封装交互对象的明确的相互引用来促进松散耦合,并允许独立地改变它们的交互。这样可以降低多个对象和类之间的通信复杂度,由原来的网状接口转变为星型结构。类型行为型适用场景系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解...

2019-08-14 23:15:11 100

原创 命令模式

定义将请求封装成对象,这样方便将命令对象进行储存、传递、调用、增加与管理。对于接收者来说,它都可以识别这些请求对象,然后执行不同的行为。命令模式解决了应用程序中对象的职责以及它们之间的通信方式,简而言之,就是命令模式可以使发送者和接收者解耦,发送者和接收者之间没有直接的引用关系,发送命令的对象只知道如何发命令,不知道如何执行。日常生活中,类似命令模式的例子,是开关。将开关和点灯连接起来...

2019-08-14 22:24:19 165

原创 备忘录模式

定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。诸如文本编辑器的撤销,虚拟机的快照,浏览器回退都采用了相同机制。类型行为型适用场景保存及恢复数据相关业务场景 需要回退的时候 发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。优点为用...

2019-08-14 21:26:18 88

原创 观察者模式

定义定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖着(观察者)都会收到通知并更新。生活中这样的机制就由很多,比如微信朋友圈在你点赞后,如果有别人在下面评论,那么你也会收到通知,在点下赞后,你就成为了观察者。上面的定义还是很容易理解的。类型行为型适用场景关联行为场景,建立一套触发机制优点观察者与被观察者之间建立了...

2019-08-13 21:37:43 99

原创 解释器模式

定义给定一个语言(如由abcdef六个字符组成的字符串集合),定义它的文法的一种表示(S::=abA*ef,A::=cd)并定义一个解释器,解释器使用该表示来解释语言中的句子。其中的解释器类似一个翻译机。为了解释一种语言,而为语言创建的解释器。字面上看,应该不难理解,就是解释语句的,比如对字符串 "1 + 2" 进行翻译为数学上的1+2,但是在实现上,会比较复杂。类型行为型...

2019-08-13 16:42:44 210

原创 策略模式

定义定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。可以大范围的处理掉 if—else。通俗的讲,就是将对应不同情况的策略封装起来,应用多态的机制针对不同的情况调用这些策略类。比如生活中淘宝的促销活动,满减,立减,返现都是不同的促销策略,这样就可以把这些不同的促销策略封装起来。策略模式使用的是面向对象的继承和多态机制,从而实现同一行为在...

2019-08-13 15:35:02 162

原创 迭代器模式

定义提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。合理组织数据的结构以及相关操作是程序设计的一个重要方面,比如在程序设计中经常会使用诸如链表、散列表等数据结构。链表和散列表等数据结构都是可以存放若干个对象的集合,其区别是按照不同的方式进行存储对象。我们希望无论何种集合,应当允许程序以一种统一的方式遍历集合中的对象,而不需要知道这些对象在集合中是如何表达及存储的...

2019-08-11 16:27:30 244

原创 模板模式

定义定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方式使得子类在不改变算法结构的情况下,重新定义算法的某些步骤。是基于继承的代码复用的基本技术。简而言之,完成一件事情,有固定的数个步骤,但是会有步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。固定不变的步骤可以抽取到父类中,需要变化的步骤定义为抽...

2019-08-11 15:42:44 493

原创 代理模式

定义为其他对象提供一种代理,以控制对这个对象的访问,代理对象在客户端和目标对象之间起到中介的作用。即为指定的目标对象提供一个代理商,由代理商来完成对目标对象的操作。打个比方,帮别人做事情,自己就是别人的代理;让别人帮自己做事情,别人就是自己的代理。代理又分为静态代理,动态代理,CGLib代理。类型结构型适用场景保护目标对象。在某些情况下,一个客户类不想或者不能直接引用一...

2019-08-10 22:21:30 175

原创 桥接模式

定义将抽象部分与它具体实现部分分离,使它们能够独立的变化。通过组合的方式建立两个类之间联系。抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。实现化:针对抽象化给出的具体实现,就是实现化,抽象化与实现化是一对互逆的概念,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。打个比方,一个...

2019-08-09 22:59:36 96

原创 组合模式

定义将对象组合成树形结构以表示 "部分-整体" 的层次结构。 组合模式使客户端对对单个对象和组合对象保持一致的方式处理。 组合模式用来表示部分与整体的层次结构(类似于树结构),而且也可以使用户对单个对象(叶子节点)以及组合对象(非叶子节点)的使用具有一致性,一致性的意思就是说,这些对象都拥有相同的接口。 如文件系统,书的目录,网站的菜单都可以使用组合模式。简单来说,组合模式能让我们能用...

2019-08-09 20:52:40 213

原创 享元模式

定义 提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效的支持大量细粒度的对象。简而言之,就是将类的通用属性抽出来,建立对象池,以达到限制对象数量的效果;一般用在需要多次创建对象的情况,如线程池、String常量池、数据库连接池、缓冲池等等。适用场景常常应用于系统底层的开发,以便解决系统新能问题 系统有大量相似对象,需要缓冲池的场景例如如果一个系统存...

2019-08-08 22:55:57 167

原创 浅谈Spring Boot关于Springmvc的自动配置

SpringBoot对默认通过WebMvcAutoConfiguration这个类对SpringMVC进行配置。根据官方文档,它实现了以下功能:1.包含ContentNegotiatingViewResolver和BeanNameViewResolver的视图解析器通过@Bean注解自动配置了ViewResolver(视图解析器:根据方法的返回值得到视图对象(View),视图对象决定如何...

2019-08-06 21:31:40 184

原创 Spring Boot日志详解

在Spring Boot中默认采用了slf4j作为日志的抽象接口,Logback作为具体的日志实现。在谈Spring Boot之前,先了解下Slf4j作为抽象接口是如何适配其他的实现类。首先来看下slf4j官网的图可以看到,slf4j可以直接适配的实现日志实现有logback,slf4j-simple和lf4j-nop,这些实现都出自slf4j作者之手,所有可想而知,就非常自然地可以与...

2019-08-04 22:26:45 236

原创 Spring Boot起步依赖和自动配置

起步依赖在Spring Boot项目中,必须继承依赖spring-boot-starter-parent,所以从这个继承依赖开始。在点击进入spring-boot-starter-parent后,其pom文件又继承了一个依赖spring-boot-dependencies,在看这个依赖前,先来看下这个文件的内容。spring-boot-starter-parent其中有对配置文件的引...

2019-08-02 22:16:19 8922

原创 适配器模式

定义将一个类的接口转换成客户期望的另一个接口 使原本不兼容的类可以一起工作 根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。 适配是为了实现某种目的而为一个适配类暂时性的加上某种方法,所以不能破坏适配类的结构。同时不这么做也符合Java的高内聚,低耦...

2019-08-02 00:37:35 100

原创 装饰者模式

定义在不改变原有对象的基础之上,将功能附加到对象上 提供了比继承更有弹性的替代方案(扩展原有对象功能)类型构建型适用场景扩展一个类的功能或给一个类添加附加职责 动态地给一个对象添加功能,这些功能还能再动态地撤销优点继承的有利补充,比继承灵活,不改变原有对象的情况下,给一个对象扩展功能 通过使用不同装饰类以及这些类的排列组合,可以实现不同的效果 符合开闭原则缺点...

2019-08-01 22:25:55 89

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除