4 it_lihongmin

尚未进行身份认证

java开发

等级
TA的排名 1w+

SpringAop源码-EnableAspectJAutoProxy实现原理(上)

目录一、AspectJAutoProxyRegistrar二、AnnotationAwareAspectJAutoProxyCreator1、ProxyConfig2、ProxyProcessorSupport3、AbstractAutoProxyCreator4、AbstractAdvisorAutoProxyCreator5、AspectJAwareAdvisorA...

2019-11-21 18:38:12

SpringAop源码-基本概念和自动代理

目录一、Spring Aop编码实现二、Spring Aop概念分析1、目标对象(TargetSource)2、增强(Advice)3、连接点(Joinpoint)4、切入点(Pointcut)5、切面(Aspect)6、织入三、Spring Aop自动代理1、自动代理2、AopProxy3、自动代理实现 一直在考虑从哪里开始梳理,看到Sp...

2019-11-20 18:05:45

Spring-Bean的作用域和生命周期

目录一、作用域二、Bean的生命周期1、配置生命周期测试实现1)、在项目resources中添加Spring配置文件2)、SpringBoot项目启动类3)、生命周期测试类4)、两个类都实现了BeanPostProcess5)、引入配置6)、启动项目2、总结 Spring Bean的作用域和生命周期一直是面试的终点,但是每次都没有去梳理,这次好像梳...

2019-11-14 16:21:15

责任链模式-实现和优秀源码使用分析

目录一、责任链实现二、Servlet以及Zuul中的责任链模式分析1、Servlet中的Filter2、Zuul中的责任链模式分析1)、FilterFileManager2)、ZuulServlet 责任链模式定义:使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。有两...

2019-11-05 22:54:15

装饰器模式-简单实现和(InputStream、ServletRequest)实现分析

目录一、装饰器模式实现二、装饰器模式使用场景分析1、Jdk的InputStream实现分析2、ServletRequest 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。《HeadFirst设计模式》上的装饰器模式的例子,我觉得还是比较形象的。有很多的饮...

2019-11-05 22:55:40

代理模式-静态代理、JDK和Cglib动态代理

目录一、静态代理1、静态代理实现二、动态代理1、Jdk动态代理2、Cglib动态代理 个人理解:说到代理模式马上静态代理和动态代理。静态代理就是已经确定A 要去访问B,但是为了一些特殊情况防止耦合(在A中初始化B的引用),那么使用一个中间的Proxy进行代理,那么A中需要引入依赖Proxy,Proxy再去调用B。但是当这种情况比较多(C需要访问D在增加一个代理。。...

2019-11-05 22:56:19

Spring源码-@Async原理分析

目录1、@Async2、ProxyAsyncConfiguration1)、实现ImportAware2)、AsyncAnnotationBeanPostProcessor3、AsyncAnnotationBeanPostProcessor4、AnnotationAsyncExecutionInterceptor1)、获取线程池(determineAsyncExecut...

2019-11-10 15:28:34

Spring源码-@EnableTransactionManagement方式事务实现分析(下)

目录一、BeanFactoryTransactionAttributeSourceAdvisor二、TransactionInterceptor1、解析@Transactional上的标签属性2、根据属性获取事务管理器(determineTransactionManager)3、获取方法唯一标识4、声明式事务(或编程式事务)1)、创建事务(如果需要,根据配置解析判断)...

2019-11-09 23:34:02

Spring源码-@EnableTransactionManagement方式事务实现分析(上)

先总览实现逻辑:@EnableTransactionManagement使用 @Import方式,注入TransactionManagementConfigurationSelector的Bean,相当于间接注入了以下两个bean 1、AutoProxyRegistrar 实现了ImportBeanDefinitionRegistrar接口,在registerBean...

2019-11-08 09:11:00

Spring源码-ImportSelector实现分析

/** * * @see DeferredImportSelector * @see Import * @see ImportBeanDefinitionRegistrar * @see Configuration */public interface ImportSelector { /** * Select and return the names of which c...

2019-11-07 18:29:50

Spring源码-事件监听机制(@EventListener实现方式)

在看@EventListener之前需要先知道 继承EventListener方式在底层是怎么实现了,可以参见前一篇博客Spring源码-事件监听机制(实现EventListener接口)。 先梳理一下,首先Ioc容器启动的时候,ApplicationContext的refresh模板方法中,initApplicationEventMulticaster()方法中那个初始化了Sim...

2019-11-06 18:33:29

Spring源码-事件监听机制(实现EventListener接口)

目录一、Spring实现自定义事件的发布订阅1、事件定义2、事件监听(泛型)3、模拟事件发送4、启动项目,调用 127.0.0.1:8080/publishOrderEvent二、Spring事件驱动原理分析(Spring版本为5.1.7)1、ApplicationContext委派ApplicationEventPublisher发送事件2、Application...

2019-11-06 16:29:55

建造者模式-各框架应用场景穷举

建造者模式使用非常的多,各大框架源码都有使用,一方面也是链式编程的推动。个人愚见,要非常好的了解一种设计模式,那么首先就是应用场景,多穷举一下各优秀源码的使用场景就足以理解了。1、lombok@Data@Builderpublic class User { private Long id; private String name;}public class...

2019-11-05 22:28:41

原型模式-简单实现和Spring源码分析

设计模式并不是Java独有的,但是Java提供了一个接口Cloneable,只要有一个类实现了该接口则可以在内存中直接拷贝对象,让原型模式的实现变的非常的简单。但是Cloneable接口是浅拷贝(这个就要去理解一下深拷贝和浅拷贝的区别了)。所以当一个对象进行clone时,如果对象中存在对象,如User对象有个属性Department dept是对象,则克隆出来的对象和源对象的dept属性指...

2019-11-05 17:00:15

观察者模式-Spring事件发布订阅实现和源码分析

在上一篇观察者模式-jdk实现和自定义实现分析后,发现jdk已经简化了很多的开发成本。然而,我们现在很多时候开发环境已经在Spring的ApplicationContext容器中,已经必须要自己再去使用jdk实现(当然上一篇博客了解观察者模式的实现我觉得还是很重要的)。Spring认为发布订阅主题,其实可以理解为事件驱动的编码,先来实现以下Spring容器中的事件发布订阅。...

2019-11-03 13:53:43

观察者模式-jdk实现和自定义实现分析

来自《Head First设计模式》的例子为发布订阅天气数据,当天气数据更新时自动更新面板上的天气数据。 个人理解:观察者模式可以理解为事物之间存在一对一或者一对多的关系,当事物存在变化时需要通知其他关联事物发生变化。也可以理解成发布订阅模式,类似于消息可以进行系统解耦;只是消息可以理解成分布式的解耦(即跨进程的解耦),而该观察者模式为进程内部的发布订阅关系。一、自己实现观察...

2019-11-03 13:52:26

模板方法模式-项目中的使用

一、订单系统完成订单方法使用模板方法模式1、背景介绍发现线上和线下订单,其实逻辑都差不多,却写了两套差不多相同的东西。于是决定重构一下,方法如下:@Transactional(rollbackFor = Exception.class) public void completeOrder(DanluOrderCompleteVO complete) { Bus...

2019-11-03 11:13:52

模板方法模式-简单实现和Spring中的使用分析

目录一、模板方法模式1、父类定义骨架2、子类实现特殊的处理3、测试调用4、执行结果二、Spring中的模板方法模式分析1、AbstractApplicationContext最重要的refresh方法使用模板方法模式实现2、SpringJDBC使用模板方法模式实现模板方法模式应该在项目中的使用会比较广泛,父类定义了骨架(调用哪些方法及顺序),某些特定方法由子类实...

2019-11-02 23:38:57

策略模式-项目中的使用

目录1、背景介绍2、使用策略加工厂的实现方式3、使用策略加枚举的调用方式在项目进行重构的时候,会发现有很多的判断,或者枚举类型的处理。则策略模式应该是比较好的方式,基于上一篇博客所述, 策略模式使其可以理解为Java的多态实现(父类引用指向不同实现的子类对象),就Spring的DispatcherServlet的九大件的默认配置,使用的则相应于是一个事先定义好规则的Map,根据不同...

2019-11-02 14:12:50

策略模式-简单实现和Spring源码中的使用分析

策略模式其实之前一直想写的,并且在项目中也用过。但是最近项目上进行重构,想将一个枚举类的判断转为策略进行调用,解耦方便扩展时,发现自己本来想的觉得挺简单,但是却废了很多精力。之前一直觉得用设计模式的话,梳理清楚关系,并将一大堆的逻辑放到很多新建的类里。这是势必会创建很多的类,这样在gc方面影响还是有的。现在觉得很多时候我们可能真的需要去做一些看上去脱裤子放屁的事,并且可能真的没有想象的简单...

2019-11-02 09:54:01

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。