自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 Spring源码浅析之bean实例的创建过程(二)

Bean实例化的过程createBean方法doCreateBean方法createBeanInstance方法obtainFromSupplier方法instantiateUsingFactoryMethod方法autowireConstructor方法instantiateBean方法在上一篇内容中,介绍了doGetBean方法的源码内容,知道了bean在创建的过程中,有三个范围,单例、多例、Scope,里面都使用到了createBean。下面本篇文章的主要内容,就是围绕createBean来进行展开

2021-09-03 15:22:04 464 1

原创 Spring源码浅析之bean实例的创建过程(一)

bean的实例化bean实例的创建方式实例化bean的流程doGetBean方法介绍getSingleton方法原型beangetObjectForBeanInstance方法创建实例流程图在之前的文章内容中,简单介绍了bean定义的加载过程,下面这篇的主要内容就是bean实例的创建过程。bean实例的创建方式ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");context.getBe

2021-08-20 10:37:51 352 1

原创 Spring IOC容器核心流程源码分析

IOC容器核心流程简单介绍refresh方法具体实现IOC容器刷新整体流程prepareRefresh方法obtainFreshBeanFactory方法prepareBeanFactory方法postProcessBeanFactory方法invokeBeanFactoryPostProcessors方法registerBeanPostProcessors方法initMessageSource方法initApplicationEventMulticaster方法onRefresh方法registerLis

2021-08-16 17:10:30 458

原创 Spring Bean定义的加载解析过程之注解的过程

注解的加载解析过程注解的使用注解的加载处理IOC容器与BeanFactoryPostProcessor的关系注解的扫描过程元数据信息扫描过滤器Bean定义的注册注解的使用public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext( "edu.demo.spring.bean","edu.demo.spring.ext");

2021-08-16 14:46:35 497

原创 Spring Bean定义的加载解析过程之XML源码

Bean定义的加载解析过程之XMLBeanDefinition接口Bean定义详解BeanDefinition的常用方法BeanDefinition的继承体系BeanDefinitionRegistry接口XML的加载和解析过程Spring中扩展XML标签BeanDefinition接口Bean定义详解/** * A BeanDefinition describes a bean instance, which has property values, * constructor argument

2021-08-13 09:50:43 215

原创 ApplicationContext源码及其IOC容器初始化过程的简单介绍!

ApplicationContext回顾一下IOC容器使用Spring的三种方式ApplicationContext的继承体系ApplicationContext的父级接口ApplicationContext的实现体系ApplicationContext的初始化过程回顾一下IOC容器IOC容器,就是为用户提供创建、管理、获取它们的类实例的容器,让用户在需要使用类对象的时候,只需要向IOC容器要就可以了,进而能够达到与具体的类解耦,为其他的高级功能和特性提供基础。IOC容器在被使用之前,需要完成以下工作

2021-07-06 16:57:27 375

原创 手写Spring Config,最终一战,来瞅瞅撒!

手写Spring Config配置分析配置的工作过程定义XML标记和注解Bean配置的解析ApplicationContext接口ApplicationContext的抽象类实现xml配置方式的ApplicationContext实现类注解配置方式的ApplicationContext实现类配置的实现XML方式XML文件来源的处理InputStreamSource接口Resource接口InputStreamSource接口的实现类XML资源加载器注解方式如何扫描的扫描的结果解析成Bean定义上一篇说到

2021-06-23 17:18:01 512 1

原创 手写Spring AOP,快来瞧一瞧看一看撒!

手写AOPAOP分析Advice实现定义Advice接口定义前置、后置、环绕和异常增强接口Pointcut实现定义PointCut接口定义正则表达式的实现类:RegExpressionPointcut定义AspectJ切点表达式的实现类:AspectJExpressionPointcutAspact实现定义Advisor接口定义PointcutAdvisor接口定义AspectJPointcutAdvisor实现类Weaving实现定义观察者接口BeanPostProcessor定义通知接口Aware定义通

2021-04-21 20:23:35 1042 1

原创 手写Spring DI依赖注入,嘿,你的益达!

手写DI提前实例化单例BeanDI分析DI的实现构造参数依赖一:定义分析二:定义一个类BeanReference三:BeanDefinition接口及其实现类四:DefaultBeanFactory类增加方法五:构造参数注入实现六:构造参数依赖测试循环依赖的处理属性依赖一:属性依赖的定义二:BeanDefinition接口及其实现类三:DefaultBeanFactory类中实现属性依赖四:属性依赖测试上一篇文章中说到,如何手写Spring IOC容器,有了IOC,下面就是手写DI了,根据上一篇文章中的

2021-04-07 19:34:31 424 1

原创 我自横刀向天笑,手写Spring IOC容器,快来Look Look!

手写IOC容器IOC分析IOC是什么IOC能够带来什么好处IOC容器是做什么工作的IOC容器是否是工厂模式的实例IOC设计实现设计IOC需要什么定义接口一:Bean工厂接口二:Bean定义的注册接口三:Bean定义接口实现接口一:Bean定义的实现GenericBeanDefinition二:Bean工厂的实现DefaultBeanFactory测试一下相信很多朋友对Spring已经很熟悉了,面试中也经常会被问到Spring里面相关的知识,比如IOC、DI、AOP等,下面通过手写IOC的方式来对IOC里

2021-03-27 10:55:06 403

原创 嗨,你知道吗,Spring还有这些高级特性!

Spring高级特性Spring介绍设计理念核心组件的协同工作设计模式的应用代理模式策略模式特性应用事件驱动编程异步执行定时任务AOP应用剖析日常开发使用非常多的Spring,它的设计理念是什么呢?有哪些核心的组件呢?为啥又需要这些组件呢?在Spring中用到了哪些设计模式呢?Spring有哪些高级特性,该如何使用呢?本文将对这些做简要的介绍,希望看完本文您能了解这些知识!Spring介绍Spring是一个Java轻量级的IOC容器,实现了AOP的特性,非侵入性框架。提供了对持久层、事务、Web层等各

2021-03-21 17:16:46 493 3

原创 一起来看Java设计思想之23种设计模式

23种设计模式为什么要使用设计模式?编写代码,写接口、写类、写方法用设计模式做设计的作用是什么?指导、规定如何去写代码,如何写接口、写类、写方法为什么要用设计模式?需求会变,代码会变,为了应对变化,为了以后方便拓展,做到以不变应万变,不变的是变化如何着手使用设计模式?1:理清现实2:区分变与不变3:搞清楚会如何变4:使用者如何隔绝这种变化...

2020-09-13 11:45:23 188

转载 简单的了解下Java设计模式:迭代器模式(转载)

迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。Java 开发过程中遍历是常用的。如下边程序:for(int i =0 ;i<arr.length;i++){ System.out.println(arr[i]);}for语句中i++每次循环自增1,迭代到下一元素。将循环变量的作用抽象化,通用化后形成的模式,在设计模式中成为Iterator模式。实现场景将书(Book)放到书架(BookShelf)中,并将

2020-09-13 11:43:56 131

转载 被遗忘的设计模式——空对象模式(转载)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qiumengchen12/article/details/44923139Pattern nameProvide an object as a surrogate for the lack of an object of a given type. The Null Object provides intelligent do nothin

2020-09-13 11:36:40 102

原创 简单的介绍一下Java设计模式:解释器模式

解释器模式定义意图主要解决问题优缺点结构示例适用情况定义解释器模式是类的行为型模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来解释这个语言中的句子意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子主要解决问题对于一些固定文法构建一个解释句子的解释器优缺点优点:扩展性好,灵活增加了新的解释表达式的方式易于实现简单的文法缺点:使用场景较少对于复杂的文法比较难以维护会引起类膨

2020-09-13 11:15:16 178

原创 Tony老师带你来看Java设计模式:代理模式

代理模式定义作用意图主要解决问题优缺点与装饰者模式的区别结构从Tony老师来看实现方式静态代理动态代理JDK动态代理的实现cglib动态代理的实现定义为其他对象提供一种代理来控制对这个对象的访问在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用作用不改变原类的代码,而增强原类对象的功能可以选择前置、后置、环绕、异常处理增加意图为其他对象提供一种代理以控制对这个对象的访问主要解决问题在直接访问对象时带来的问题,比如说:要访问的对象在远程

2020-09-12 23:51:25 436

原创 观世音甘泉活树的故事竟然是Java设计模式:备忘录模式

备忘录模式定义意图主要解决问题何时使用优缺点结构白箱实现黑箱实现多重检查点观世音甘泉活树的故事定义备忘录模式是对象的行为型模式,备忘录对象是一个用来存储另外一个对象内部状态的快照的对象,备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以使得在将来合适的时候把这个对象还原到存储起来的状态意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态主要解决问题在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在

2020-09-07 19:57:04 264

原创 由电脑专卖系统引发的Java设计模式:访问者模式

访问者模式定义意图解决问题何时使用优缺点结构电脑专卖系统定义访问者模式是对象的行为型模式,它的目的是封装一些施加于某些数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的数据结构则可以保持不变意图将数据结构与数据操作分离解决问题稳定的数据结构和易变的操作耦合问题何时使用要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中优缺点优点:使得增加新的操作很容易将有关的行为集中到一个访问者对象中,而不是

2020-09-06 11:04:32 177

原创 孙悟空的身外身法术使用了Java设计模式:原型模式

原型模式定义定义原型模式属于对象的创建型模式,通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意

2020-09-01 16:03:21 808

原创 安装电脑思考到了Java设计模式:建造者模式

建造者模式定义意图主要解决问题何时使用优缺点结构组装电脑的例子定义建造者模式是对象的创建型模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的意图将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示主要解决问题主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各

2020-08-30 20:34:32 357

原创 女娲造人引发思考之Java设计模式:工厂模式

工厂模式工厂模式的几种形态简单工厂模式示例结构优缺点女娲抟土造人工厂方法模式结构女娲举绳造人抽象工厂模式结构女娲造万物工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态的决定将哪一个类实例化,不必事先知道每次要实例化哪一个类,工厂模式有以下几种形态:简单工厂(Simple Factory)模式:又称为静态工厂方法模式工厂方法(Factory Method)模式:又称为多态性工厂模式抽象工厂(Abstract Factory)模式:又称为工具箱模式简单工厂模式示例

2020-08-24 22:42:06 1199

原创 这个世界上只有一个你之Java设计模式:单例模式

单例模式单例模式的要点单例模式的特点饿汉式单例类懒汉式单例类一:懒汉式,线程不安全二:懒汉式,线程安全三:懒汉式,线程不安全四:懒汉式,双检锁/双重校验锁五:懒汉式,静态内部类六:懒汉式,枚举总结单例模式的要点单例模式属于创建型模式三个要点:某个类只能有一个实例它必须自己创建这个实例它必须自行向整个系统提供这个实例单例模式的特点单例类只能有一个实例单例类必须自己创建自己的唯一的实例单例类必须给所有其他对象提供这一实例饿汉式单例类线程安全,实现简单优点:没有加锁,执行效率高

2020-08-22 22:28:41 403

原创 由奶茶店突发奇想开始了Java设计模式:享元模式

享元模式定义意图主要解决问题何时使用优缺点结构奶茶摊位的例子奶茶店的例子在什么情况下使用享元模式定义享元模式是对象的结构模式,享元模式以共享的方式高效的支持大量的细粒度对象,要用于减少创建对象的数量,以减少内存占用和提高性能享元对象能做到共享的关键在于区分了内蕴状态和外蕴状态内蕴状态是存储在享元对象内部的,并且是不会随环境的改变而有所不同,因此,一个享元对象可以具有内蕴状态并且可以共享外蕴状态是随着环境的改变而改变的,并且是不可以共享的状态,享元对象的外蕴状态必须是由客户端保存,并且是在享元对象创

2020-08-22 21:47:31 668

原创 老和尚给小和尚讲故事引发了Java设计模式:组合模式

组合模式示例组合模式定义意图主要解决问题优缺点安全式和透明式的组合模式安全式的合成模式的结构透明式的合成模式的结构老和尚和小和尚的故事示例有一个绘图系统,可以描绘各种图形,假设现在可以描绘线、长方形、圆形定义一个抽象类,所有的图形继承此类,完成绘图:public abstract class Graphics { /** 绘图 */ public abstract void draw();}线、长方形、圆形分别实现上述抽象类:public class Line extend

2020-08-22 18:39:14 619

原创 从中国加入WTO来看Java设计模式:中介者模式

中介者模式应用场景中介者模式定义意图主要解决问题何时使用优缺点世界贸易组织应用场景系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类中介者模式定义包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用,从而使得他们比较松散的耦合设计原则:迪米特法则意图使用一个中介对象来封装一系列的对象交互,中介者使得这些对象不必互相明显引用,从而使得他们比较松散的耦合,而且可以独立的改变他们之间的交互

2020-08-21 22:54:19 221

原创 DevOps之Jenkins相关知识

Jenkins相关知识认识JenkinsJenkins-CI(持续集成)Jenkins-CD(持续交付)认识Jenkins你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。Jenkins-CI(持续集成)我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的

2020-08-21 22:08:36 711

原创 从西天取经的九九八十一难来看Java设计模式:模板方法模式

模板方法模式示例模板方法模式定义意图主要解决问题适用场景优缺点西天取经的九九八十一难示例当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤,但一些步骤,不同的子类有不同的行为时,我们该如何来设计该类?下面以玩王者荣耀为例展开学习:玩游戏首先需要初始化游戏,然后加载地图、加载角色、然后才能开始游戏,最后结束游戏定义一个Game类:public abstract class Game { public final void play () { initial

2020-08-19 22:06:00 490

原创 八戒转世投胎竟然是Java设计模式:桥接模式

桥接模式示例代码实例桥接模式定义意图主要解决问题何时使用优缺点八戒转世投胎的故事示例请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思想设计图形分析:1、比如有红、黄、蓝三种颜色2、形状有方形、圆、三角形3、圆可以是红圆、黄圆、蓝圆从上面可以看到,变化的地方有两个:1、形状2、颜色任其在两个维度各自变化,为这两个维度搭个桥,让它们可以融合在一起,就是桥接模式,那么该如何搭呢?需要从两个地方入手:1:抽象分别对各个维度进行抽象,将共同部分抽取出来2:组合将抽

2020-08-19 21:40:48 534 1

原创 曾侯乙编钟引发的遐想之Java设计模式:状态模式

状态模式示例简单例子改进代码状态模式定义意图主要解决问题何时使用优缺点曾侯乙编钟状态模式-命令模式-策略模式示例一个类对外提供了多个行为,同时该类对象有多种状态,不同状态下对外的行为的表现不同,我们该如何来设计该类让它对状态可以灵活扩展?以自动售卖饮料机为例开发一个程序:用户可以在饮料机上进行支付、退款、购买、取货操作不同的状态下,这四种操作会有不同的表现例如:在用户没有支付的情况下,用户操作了退款、购买、取货会发生什么简单例子public class DrinksSellingMac

2020-08-19 21:04:13 204

原创 玉帝传美猴王上天,大闹天宫之Java设计模式:命令模式

命令模式示例改进代码命令模式定义意图主要解决问题何时使用优缺点玉帝传美猴王上天命令模式和策略模式的区别示例系统需要设计一个命令行界面,用户可输入命令来执行某项功能,系统的功能会不断增加,命令也会不断的增加如何将一项一项的功能加入到这个命令行界面?如何让命令行程序写好后,不因功能的添加而修改,又可以灵活的加入命令和功能?下面以奶茶店售卖奶茶为例:public class MashedTaroMilk { public void build() { System.out.p

2020-08-19 20:28:56 689

原创 击鼓传花联想到了Java设计模式:责任链模式

责任链模式应用场景简单示例责任链模式定义意图主要解决问题何时使用优缺点击鼓传花的故事应用场景http web请求处理,请求过来后将经过转码、解析、参数封装、鉴权等一系列的处理(责任),而且要经过多少处理是可以灵活调整的那么该怎么做呢?将所有的处理都写在一个类中行不行呢?分成多个类又该如何灵活的组合在一起呢?简单示例Request类:public interface Request { //do something...}ResponsibilityChain类:public

2020-08-18 18:42:48 479

原创 由一名保安引发的Java设计模式:外观模式

外观(门面)模式应用场景外观模式定义意图主要解决问题何时使用优缺点结构保安的故事应用场景使用方要完成一个功能,需要调用提供方的多个接口、方法,调用过程复杂时,我们可以再提供一个高层接口(新的外观),将复杂的调用过程向使用方隐藏,适配器模式的变种外观模式定义隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口意图为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用主要解决问题降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接

2020-08-18 18:41:59 718

原创 指方画圆之Java设计模式:适配器模式

适配器模式应用场景适配器模式定义意图主要解决问题何时使用优缺点指鹿为马VS指方为圆指鹿为马指方为圆应用场景使用者依赖的接口与提供者的接口不匹配时,就加一层适配,而不修改两端的代码生活中使用的风扇,假设插头是两孔的,但是我们家里墙上的插座只有三孔的,这个时候就需要一个适配器了,这个适配器就是外面买的插座,以上场景为例,写一个例子:三孔的插座:public class ThreeOutlet { /** 三孔插座 */ public void link(String positive,

2020-08-18 18:41:27 481

原创 什么?女神发了朋友圈,快来围观之Java设计模式:观察者模式

观察者模式观察者模式示例定义设计原则意图主要解决问题何时使用优缺点女神和追求者的故事Java中的实现观察者模式示例微信公众号,关注就可以收到推送的消息,取消关注就不会收到定义定义了对象之间一对多的依赖关系,当一端对象发生改变时,它的所有依赖者都会收到通知并自动更新(被调用更新方法)观察者模式也被称为:监听模式、发布订阅模式。提供了一种对象之间松耦合的设计方式面向接口编程,注册、回调机制设计原则为了交互对象之间的松耦合设计而努力意图定义了对象之间一对多的依赖关系,当一端对象发生改变时,它

2020-08-17 21:29:06 434

原创 由孙悟空的七十二变看Java设计模式:装饰者模式

装饰者模式应用场景代码示例改进代码装饰者模式定义意图主要解决问题何时使用优缺点孙悟空的七十二变应用场景京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动满减:满200减50每满减:每满100减10打折:买两件8折,三件7折数量减:满三件减去最低价的一件假设现在顾客买了两件衣服先是打了8折,然后又满200减了50,促销活动多重叠加了,该如何灵活实现订单金额计算?代码示例PromotionAlgorithm接口,计算订单金额:public interface Promotion

2020-08-17 20:01:18 443

原创 诸葛亮的锦囊妙计竟然是大名鼎鼎的Java设计模式:策略模式

策略模式应用场景简单实现例子改进代码策略模式定义意图主要解决问题何时使用优缺点诸葛亮的锦囊妙计应用场景京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动满减:满200减50每满减:每满100减10打折:买两件8折,三件7折数量减:满三件减去最低价的一件顾客在下单的时候可以选择其中几种来剁手,那么后端怎么来灵活的应对金额的计算呢,以后可能不同的节日还会有更多的促销活动,该怎么去计算订单的金额?简单实现例子public class OrderService { publi

2020-08-16 22:44:14 321

原创 Java面向对象7大设计原则

设计原则单一职责原则 SRP开闭原则 OCP里氏替换原则 LSP依赖倒置原则 DIP接口隔离原则 ISP组合复用原则 CRP迪米特法则 LOD单一职责原则 SRP开闭原则 OCP里氏替换原则 LSP依赖倒置原则 DIP接口隔离原则 ISP组合复用原则 CRP迪米特法则 LOD...

2020-08-15 15:53:44 592 1

原创 Java面向对象OOP思想概述

Java设计思想OOP思想(Object Oriented Programming)类和对象接口抽象类OOP三大特性封装继承多态OOP复用的形式OOP思想(Object Oriented Programming)类和对象在面向对象中,类和对象是最基本、最重要的组成单元类:类可以说是一个模板,它描述了一类对象的行为和状态对象:对象是类的一个实例,有对应的状态和行为类是做什么用的呢:模拟现实,封装数据和代码假如说生活中常见的动物狗,它也可以说是一个类,那么具体的对象例如:中华田园犬、哈士奇、哈巴狗

2020-08-14 22:36:39 1069

转载 Activiti 23张表及7大服务详解

转载:Activiti 23张表及7大服务详解

2020-08-07 16:27:33 283

原创 Maven相关知识总结

Maven知识认识MavenMaven下载安装Maven能用来做什么Maven核心概念开发目录坐标和仓库认识MavenMaven是Apache软件基金会组织维护的一款自动化构建工具, 专注于Java平台工程的项目构建和依赖管理:1:项目构建构建不是创建,创建一个工程并不等于构建一个项目,用Maven可以管理项目开发的整个生命周期2:依赖管理管理项目依赖的所有jar文件,Maven项目依赖于一个库,而这个库又依赖其他库,只需要加上直接依赖的库,间接依赖的库也会加入到项目中假设上图,引入spr

2020-07-13 21:10:59 161

空空如也

空空如也

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

TA关注的人

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