自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (15)
  • 收藏
  • 关注

原创 SpringIoc源码(四)- BeanFactory(三)- 自定义标签实现和分析

目录1、自定义标签实现1)、定义Bean2)、spring.handlers3)、spring.schemas3)、Spring Xml配置文件4) 、测试2、自定义标签实现分析1)、获取NamespaceHandler2)、获取自定义的解析器(AbstractSingleBeanDefinitionParser的子类) 为什么要看自定义标签,因为Sp...

2019-11-26 20:19:03 408

原创 SpringIoc源码(三)- BeanFactory(二)- XmlBeanFactory注册BeanDefinition

目录1、loadBeanDefinitions2、doLoadDocument1)、DocumentBuilderFactory2)、createDocumentBuilder3)、parse(解析Xml)3、registerBeanDefinitions1)、import标签解析2)、alias标签解析3)、bean标签解析3-1)、parseBeanDe...

2019-11-26 14:38:27 324

原创 SpringIoc源码(二)- BeanFactory(一)- 结构梳理(DefaultListableBeanFactory)

目录一、接口1、BeanFactory1)、FACTORY_BEAN_PREFIX2)、ObjectProvider3)、ResolvableType2、AliasRegistry3、BeanDefinitionRegistry3、SingletonBeanRegistry二、抽象类1、SimpleAliasRegistry2、DefaultSingle...

2019-11-26 10:14:59 631

原创 SpringIoc源码(一)- 总览

目录一、BeanFactory1)、注册BeanDefinition2)、getBean二、ApplicationContext三、Spring MVC四、Spring Boot总览:Ioc是Spring的一切的基础,而BeanFactory又是Ioc的基础。1、BeanFactory的实现逻辑2、ApplicationContext与BeanFactory的关...

2019-11-25 18:16:02 450

原创 SpringAop源码(七)- 嵌套调用问题分析与解决

目录一、本类嵌套Aop问题分析二、本类嵌套Aop问题解决1、依赖注入自己2、BeanFactoryAware(或者ApplicationContextAware)3、exposeProxy设置为true 之前分析了整个Aop的实现原理和流程。Spring框架的Transactional,Async等都是基于Spring Aop进行实现的。那么很多时候我们在同一个Bea...

2019-11-25 15:10:06 470

原创 SpringAop源码(六)- 标签aspectj-autoproxy实现分析

目录1、自定义标签、解析器的加载和调用时机2、AspectJAutoProxyBeanDefinitionParser3、总结1、自定义标签、解析器的加载和调用时机 之前分析过EnableAspectJAutoProxy方式启动Spring Aop的整个代理过程,当前在这之前基本都是使用Xml启动方式,配置如下:<aop:aspectj-autoproxy p...

2019-11-24 11:03:28 803

原创 SpringAop源码(五)- EnableAspectJAutoProxy实现原理(调用)- invoke或者intercept(代理方法执行)

目录一、invoke实现1)、getInterceptorsAndDynamicInterceptionAdvice1、MethodBeforeAdviceInterceptor2、AfterReturningAdviceInterceptor3、ThrowsAdviceInterceptor2)、ReflectiveMethodInvocation.proceed...

2019-11-24 02:32:22 677

原创 SpringAop源码(四)- EnableAspectJAutoProxy实现原理(下)- createProxy

目录一、buildAdvisors二、proxyFactory.getProxy1、createAopProxy1)、DefaultAopProxyFactory2)、AopProxy2、getProxy三、createProxy总结:四、Aop总结:先梳理一下,上一步拿到的都是Advisor的子类Bean,或者InstantiationModelAwarePo...

2019-11-22 12:47:30 417

原创 SpringAop源码(三)- EnableAspectJAutoProxy实现原理(中)- getAdvicesAndAdvisorsForBean

目录一、findAdvisorBeans获取所有可用的切面二、findAdvisorsThatCanApply从所有切面中获取可用的切面1)、父类中findAdvisorsThatCanApply2)、本类中 buildAspectJAdvisors1、BeanFactory中获取Object的子类2、遍历,根据名称获取Class3、判断是否是AspectJ注解...

2019-11-22 12:47:27 1136

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

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

2019-11-21 18:38:12 594

原创 SpringAop源码(一)- 深入理解Aop基本概念

目录一、Spring Aop编码实现二、Spring Aop概念分析1、目标对象(TargetSource)2、增强(Advice)3、连接点(Joinpoint)4、切入点(Pointcut)5、切面(Advisor)6、织入 一直在考虑从哪里开始梳理,看到Spring的Aop包就大概明白了。首先,虽然Aop不是Spring的第二大特性,但是并不是Spr...

2019-11-20 18:05:45 364

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

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

2019-11-14 17:10:38 798

原创 责任链模式-实现和Servlet、Spring Aop、Zuul中的责任链模式分析

目录一、责任链实现二、Servlet、Spring Aop、Zuul中的责任链模式分析1、Servlet中的Filter2、Zuul中的责任链模式分析1)、FilterFileManager2)、ZuulServlet3)、Spring Aop责任链模式 责任链模式定义:使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一...

2019-11-13 17:49:22 663

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

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

2019-11-12 18:55:50 269

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

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

2019-11-12 13:41:01 304 1

原创 Spring源码-@Async原理分析

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

2019-11-10 18:22:53 586

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

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

2019-11-10 14:52:02 1001

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

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

2019-11-09 23:32:10 6464

原创 Spring源码-ImportSelector实现分析

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

2019-11-07 23:30:34 882 1

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

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

2019-11-06 23:25:39 21539

原创 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:33:25 5613 7

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

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

2019-11-05 22:46:07 862

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

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

2019-11-05 18:09:33 826 4

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

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

2019-11-03 23:40:49 545

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

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

2019-11-03 17:35:49 235

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

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

2019-11-03 11:29:35 491

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

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

2019-11-03 11:08:45 3545

原创 策略模式-项目中的使用

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

2019-11-02 23:17:59 778

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

目录一、策略模式1、 创建一个策略抽象2、策略的N中实现3、为策略的调用创建一个触发容器(方法调用触发)4、测试简单的策略模式二、Spring中的策略模式1、Spring MVC中 DispatcherServlet 使用策略模式 策略模式其实之前一直想写的,并且在项目中也用过。但是最近项目上进行重构,想将一个枚举类的判断转为策略进行调用,解耦方便扩展时,发现...

2019-11-02 13:58:56 712

Jenkins的rpm包

jenkins的rpm包,用于centos下安装jenkins。jenkins的rpm包,用于centos下安装jenkins。

2018-06-26

springboot swagger2 demo

OpenAPI 规范3 , springboot swagger2 demo ,主要是方便自己后面使用。

2017-12-17

gui-反编译

反编译

2017-08-02

renren-generator

renren-generator快速开发平台

2017-07-10

renren-fastplus

renren-fastplus快速开发平台

2017-07-10

renren-fast

**项目说明** - renren-fast是一个轻量级的Java快速开发平台,能快速开发项目并交付

2017-07-10

jeesite_hibernate

快熟开发java web项目

2017-06-13

jeesite_mybatis

快熟开发java web项目

2017-06-13

FileZilla工具

FileZilla

2017-06-12

Xshell工具

Xshell工具

2017-06-12

Xftp文件上传

Xftp

2017-06-12

firebug断点调试

断点调试

2017-05-23

eclipse的反编译插件

个人使用最好的反编译插件,就按照一般的eclipse插件进行安装即可

2017-05-14

Postman离线安装包

Postman离线安装包

2017-05-01

空空如也

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

TA关注的人

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