
Spring 5.x 源码之旅
文章平均质量分 88
对5.2.1的Spring源码进行解析,了解初始化过程和原理。尽可能掌握Sping设计的思想
王伟王胖胖
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot 2.2.6 相关知识点总结
SpringBoot 2.2.6 相关扩展点和注解总结扩展点注解扩展点一些常用的扩展点。注解一些常用注解,springcloud框架有很多自定义的其实也就是这些组合扩展出来的。先总结这些,后面慢慢补。好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。...原创 2020-05-03 21:41:38 · 1586 阅读 · 1 评论 -
Spring 5.x 源码之旅八十五Qualifier注解三
Spring 5.x 源码之旅八十五Qualifier注解三checkQualifier检查要候选bean定义是否有这个注解checkQualifiers部分2checkQualifier检查要候选bean定义是否有这个注解这个方法其实就是检查候选的bean定义里有没有相关Qualifier注解,先检查下bean定义有没有添加type类型的全限定类型和短类名的AutowireCandidate...原创 2020-04-20 20:19:57 · 601 阅读 · 0 评论 -
Spring 5.x 源码之旅八十四Qualifier注解二
Spring 5.x 源码之旅八十四Qualifier注解二@Qualifier条件限制原理属性注入流程friend1判断是否符合获取属性的注解checkQualifiers部分1isQualifier是否是Qualifier类型的注解@Qualifier条件限制原理假设我们还是上篇的例子,我们现在要求注入女的朋友:实际配置是有两个朋友:属性注入流程我们看看底层怎么做的,首先是属性注...原创 2020-04-20 20:19:29 · 767 阅读 · 0 评论 -
Spring 5.x 源码之旅八十三Qualifier注解一
Spring 5.x 源码之旅八十三Qualifier注解一@Qualifier注解例子-程序员选朋友Girl注解Boy注解Friend朋友Programmer程序员配置类测试类全女的/全男的男女都要@Qualifier注解说说Qualifier注解,这个注解可以用在注解上,是@Inherited注解的,可被继承的,Target里有ElementType.ANNOTATION_TYPE,这个可...原创 2020-04-20 20:18:58 · 869 阅读 · 0 评论 -
Spring 5.x 源码之旅八十二事务CGLIB动态代理的秘密四
Spring 5.x 源码之旅八十二事务CGLIB动态代理的秘密四CGLIB代理的事务CglibAopProxy的getProxyCglibAopProxy的getCallbacksDynamicAdvisedInterceptor的interceptCglibMethodInvocation的invokeJoinpoint为什么这里不能调用invokeSuper制造类型转换异常CGLIB代理的...原创 2020-04-09 16:53:26 · 597 阅读 · 0 评论 -
Spring 5.x 源码之旅八十一事务CGLIB动态代理的秘密三
Spring 5.x 源码之旅八十一事务CGLIB动态代理的秘密三FastClass方法调用方法索引增强对象的invoke方法调用注意点,无限递归调用溢出MethodProxy是共享的cglibObj1的两个f1cglibObj1的f2cglibObj2的f1FastClass方法调用前面讲了,动态创建了FastClass方法索引增强对象,能快速调用方法,内部是用FastClass调用的,我来...原创 2020-04-09 16:53:01 · 548 阅读 · 0 评论 -
Spring 5.x 源码之旅八十事务CGLIB动态代理的秘密二
Spring 5.x 源码之旅八十事务CGLIB动态代理的秘密二拦截器的intercept调用的秘密MethodProxy的invokeSuper调用父类方法MethodProxy的init创建FastClassInfoFastClassInfo动态生成FastClass增强类拦截器的intercept调用的秘密一般我们在这里面做一些增强,然后调用原来的对象的方法,也就是methodProxy...原创 2020-04-09 16:52:38 · 619 阅读 · 0 评论 -
Spring 5.x 源码之旅七十九事务CGLIB动态代理秘密一
Spring 5.x 源码之旅七十九事务CGLIB动态代理的秘密一CGLIB动态代理的细节来个例子讲比较好理解cglibObj1.f1()怎么执行的增强类CGLIB动态代理类方法增强f1/f2增强后CGLIB动态代理的细节本篇想讲下CGLIB动态代理的一些细节,因为前面的事务讲的是JDK的,我们知道JDK动态代理最终就是用了方法的反射调用,调用被代理对象的方法,而CGLIB可不是那么简单,虽然...原创 2020-04-09 16:52:15 · 496 阅读 · 0 评论 -
Spring 5.x 源码之旅七十八事务简单总结
Spring 5.x 源码之旅七十八事务简单总结创建事务信息流程图处理提交流程图处理回滚流程图传播机制图简单总结REQUIRED和REQUIRES_NEW的主要区别NESTED和REQUIRES_NEW的主要区别创建事务信息流程图处理提交流程图处理回滚流程图传播机制图简单总结事务的例子和原理基本都分析了,当然也有些没讲清楚,还是需要自己多熟悉,其实原理就是AOP的拦截,每个方法...原创 2020-04-07 20:57:46 · 504 阅读 · 0 评论 -
Spring 5.x 源码之旅七十七事务细节分析六
Spring 5.x 源码之旅七十六事务设计思想六创建事务信息流程图处理提交流程图处理回滚流程图外层是REQUIRED有异常捕获内层是NESTED事务状态异常回滚外层是REQUIRED有异常内层是NESTED创建事务信息流程图处理提交流程图处理回滚流程图外层是REQUIRED有异常捕获内层是NESTED事务状态外层:内层用外层的连接,而且不是新事务,不是新同步:异常回...原创 2020-04-07 20:57:18 · 455 阅读 · 0 评论 -
Spring 5.x 源码之旅七十六事务细节分析五
Spring 5.x 源码之旅七十五事务设计思想五创建事务信息流程图处理提交流程图处理回滚流程图内外都是REQUIRED,外层捕获异常外层是REQUIRED并捕获异常内层是REQUIRES_NEW事务状态事务回滚情况外层是REQUIRED内层是REQUIRES_NEW外层是REQUIRES_NEW,REQUIRED,NESTED内层是REQUIRES_NEW创建事务信息流程图处理提交流程图...原创 2020-04-07 20:56:49 · 336 阅读 · 0 评论 -
Spring 5.x 源码之旅七十五事务细节分析四
Spring 5.x 源码之旅七十四事务设计思想四创建事务信息流程图处理提交流程图处理回滚流程图外部方法回滚处理清除处理创建事务信息流程图处理提交流程图处理回滚流程图外部方法回滚处理前面说了,内部异常后,事务没做什么,只是设置了全局回滚的标记,处理完之后异常还会继续往上抛:然后来看外部的事务怎么处理,先看外部事务状态,此时可见连接持有器的回滚标记已经被内部事务改成true了,因...原创 2020-04-07 20:43:23 · 392 阅读 · 1 评论 -
Spring 5.x 源码之旅七十四事务细节分析三
Spring 5.x 源码之旅七十三事务设计思想三创建事务信息流程图处理提交流程图处理回滚流程图准备和线程私有变量同步状态prepareSynchronization内外都是REQUIRED是如何回滚的创建事务状态内部方法异常回滚处理doSetRollbackOnly设置了全局的回滚标记创建事务信息流程图处理提交流程图处理回滚流程图准备和线程私有变量同步状态prepareSynchr...原创 2020-04-07 20:42:58 · 391 阅读 · 0 评论 -
Spring 5.x 源码之旅七十三事务细节分析二
Spring 5.x 源码之旅七十三事务设计思想二创建事务信息流程图处理提交流程图处理回滚流程图传播机制图开启新连接自动提交标记事务激活了数据源和连接资源绑定TransactionSynchronizationManager的线程私有变量创建事务信息流程图处理提交流程图处理回滚流程图传播机制图开启新连接上篇说了,会给每个方法创建一个事务状态TransactionStatus,实...原创 2020-04-07 20:42:25 · 366 阅读 · 0 评论 -
Spring 5.x 源码之旅七十二事务细节分析一
Spring 5.x 源码之旅七十二事务设计思想一创建事务信息流程图处理提交流程图处理回滚流程图传播机制图spring事务设计思想对象调用内部方法事务不起作用事务状态TransactionStatustransactionnewTransactionnewSynchronization创建事务信息流程图处理提交流程图处理回滚流程图传播机制图spring事务设计思想所有的细节都在...原创 2020-04-07 20:41:58 · 938 阅读 · 0 评论 -
Spring 5.x 源码之旅七十一深入AOP事务原理八
Spring 5.x 源码之旅七十一深入AOP事务原理八传播机制图AbstractPlatformTransactionManager的processCommit处理提交AbstractTransactionStatus的releaseHeldSavepoint释放保存点JdbcTransactionObjectSupport的releaseSavepoint释放保存点DataSourceTran...原创 2020-04-06 23:04:06 · 553 阅读 · 0 评论 -
Spring 5.x 源码之旅七十深入AOP事务原理七
Spring 5.x 源码之旅七十深入AOP事务原理七传播机制图ConnectionHolder的clear连接持有器的清除ResourceHolderSupport的clearAbstractPlatformTransactionManager的resume恢复挂起的事务DataSourceTransactionManager的doResumeTransactionAspectSupport的c...原创 2020-04-06 23:03:40 · 462 阅读 · 0 评论 -
Spring 5.x 源码之旅六十九深入AOP事务原理六
Spring 5.x 源码之旅六十久深入AOP事务原理六传播机制图AbstractPlatformTransactionManager的cleanupAfterCompletion回滚后处理TransactionSynchronizationManager的clear清除同步状态DataSourceTransactionManager的doCleanupAfterCompletion清除连接相关操...原创 2020-04-06 23:03:11 · 703 阅读 · 0 评论 -
Spring 5.x 源码之旅六十八深入AOP事务原理五
Spring 5.x 源码之旅六十八深入AOP事务原理五传播机制图AbstractPlatformTransactionManager的processRollback处理回滚AbstractTransactionStatus的rollbackToHeldSavepoint回滚到保存点JdbcTransactionObjectSupport的rollbackToSavepoint回滚到保存点Data...原创 2020-04-06 23:02:42 · 510 阅读 · 0 评论 -
Spring 5.x 源码之旅六十七深入AOP事务原理四
Spring 5.x 源码之旅六十七深入AOP事务原理四传播机制图AbstractPlatformTransactionManager的prepareSynchronization同步状态TransactionAspectSupport的prepareTransactionInfo准备事务信息TransactionAspectSupport的completeTransactionAfterThro...原创 2020-04-06 23:02:14 · 564 阅读 · 0 评论 -
Spring 5.x 源码之旅六十六深入AOP事务原理三
Spring 5.x 源码之旅六十六深入AOP事务原理三传播机制图AbstractPlatformTransactionManager的suspend挂起当前事务DataSourceTransactionManager的doSuspend挂起资源AbstractPlatformTransactionManager的SuspendedResourcesHolder构造方法AbstractPlatfo...原创 2020-04-06 15:59:27 · 528 阅读 · 0 评论 -
Spring 5.x 源码之旅六十五深入AOP事务原理二
Spring 5.x 源码之旅六十五深入AOP事务原理二传播机制图AbstractPlatformTransactionManager的getTransaction获取事务DataSourceTransactionManager的doGetTransaction获取事务DataSourceTransactionManager的isExistingTransaction是否存在当前事务Abstrac...原创 2020-04-06 15:58:58 · 416 阅读 · 0 评论 -
Spring 5.x 源码之旅六十四深入AOP事务原理一
Spring 5.x 源码之旅六十四深入AOP事务原理一传播机制图AOP拦截原理TransactionAspectSupport的invokeWithinTransactionTransactionAspectSupport的determineTransactionManager获取事务管理器TransactionAspectSupport的createTransactionIfNecessary...原创 2020-04-06 15:58:15 · 622 阅读 · 0 评论 -
Spring 5.x 源码之旅六十三AOP事务实战四
Spring 5.x 源码之旅六十三AOP事务拦截原理与实战四传播机制图NESTED例子外层无捕获异常外层有捕获异常REQUIRED和NESTED回滚的区别REQUIRES_NEW和NESTED的区别传播机制图NESTED存在事务就会创建保存点,到时候回滚到保存点,不存在就创建一个事务。例子外层无捕获异常外层无捕获异常的情况,就算创建了保存点,回滚了,但是外层事务捕获到异常还是会进行...原创 2020-04-06 15:57:40 · 395 阅读 · 0 评论 -
Spring 5.x 源码之旅六十二AOP事务实战三
Spring 5.x 源码之旅六十二AOP事务拦截原理与实战三传播机制图NEVER例子NOT_SUPPORTED例子REQUIRES_NEW例子传播机制图NEVER不要事务,如果当前存在事务还要报异常。例子直接回滚了,调用accountDao.insertTest1()的时候报异常:org.springframework.transaction.IllegalTransactio...原创 2020-04-06 15:57:10 · 360 阅读 · 0 评论 -
Spring 5.x 源码之旅六十一AOP事务实战二
Spring 5.x 源码之旅六十一AOP事务拦截原理与实战二用NOT_SUPPORTED传播级别的事务,有异常的情况用NEVER传播级别的事务,有异常的情况用NESTED传播级别的事务,有异常的情况用NOT_SUPPORTED传播级别的事务,有异常的情况没有执行事务:用NEVER传播级别的事务,有异常的情况这个需要有另外一个事务的情况下比较理解,比如说外面还有个事务:里面是这样:...原创 2020-04-06 15:55:34 · 417 阅读 · 0 评论 -
Spring 5.x 源码之旅六十AOP事务实战一
Spring 5.x 源码之旅六十AOP事务的初始化流程三JDK动态代理JDK动态代理前面讲了事务注解的属性获取,如果发现有实例的方法有事务后面就会进行动态代理,其实和前面AOP流程一样的。...原创 2020-04-06 15:55:09 · 552 阅读 · 0 评论 -
Spring 5.x 源码之旅五十九AOP事务的初始化流程二
Spring 5.x 源码之旅五十九AOP事务的初始化流程二AbstractAdvisorAutoProxyCreator的findAdvisorsThatCanApplyAopUtils的findAdvisorsThatCanApplyAopUtils的canApplyAbstractFallbackTransactionAttributeSource的getTransactionAttribu...原创 2020-04-05 17:09:07 · 640 阅读 · 0 评论 -
Spring 5.x 源码之旅五十七事务注解EnableTransactionManagement
Spring 5.x 源码之旅五十七事务注解EnableTransactionManagement@EnableTransactionManagement做了什么TransactionManagementConfigurationSelectorAdviceModeImportSelector的selectImportsTransactionManagementConfigurationSelec...原创 2020-04-05 17:08:38 · 818 阅读 · 0 评论 -
Spring 5.x 源码之旅五十八AOP事务的初始化流程一
Spring 5.x 源码之旅五十八AOP事务的初始化流程一事务的初始化流程AutoProxyRegistrar创建TransactionalEventListenerFactory创建InfrastructureAdvisorAutoProxyCreator创建AbstractAutoProxyCreator的postProcessAfterInitializationAbstractAdvis...原创 2020-04-05 17:07:54 · 844 阅读 · 0 评论 -
Spring 5.x 源码之旅五十六自动装配的秘密二
Spring 5.x 源码之旅五十六自动装配模式二AUTOWIRE_BY_TYPE按类型装配AbstractAutowireCapableBeanFactory的autowireByType总结AUTOWIRE_BY_TYPE按类型装配上篇将了AUTOWIRE_NO和AUTOWIRE_BY_NAME的装配方式,这篇把剩下的一个也讲了。我们改下这个类:AbstractAutowireCap...原创 2020-04-02 22:37:20 · 479 阅读 · 0 评论 -
Spring 5.x 源码之旅五十五自动装配的秘密一
Spring 5.x 源码之旅五十五自动装配模式一AUTOWIRE_NO按类型装配AUTOWIRE_BY_NAME按set的方法名装配AbstractAutowireCapableBeanFactory的autowireByName根据名字装配PropertyInfo的getAUTOWIRE_NO按类型装配我们了解的自动装配就是@Autowired吧,基本上我们会在类的属性上用这个,其实这个默...原创 2020-04-02 22:36:30 · 580 阅读 · 0 评论 -
Spring 5.x 源码之旅五十四解析配置类加载bean定义过程四
Spring 5.x 源码之旅五十四解析配置类加载bean定义过程四图得留着,可以随时来看处理bean注解方法processInterfaces处理接口默认实现加载bean定义处理被import进来的普通的配置类并注册bean定义处理beanMethods集合,解析并注册bean定义处理importedResources集合,解析xml并注册bean定义处理importBeanDefinition...原创 2020-04-01 22:24:45 · 714 阅读 · 0 评论 -
Spring 5.x 源码之旅五十二解析配置类加载bean定义过程三
Spring 5.x 源码之旅五十二解析配置类加载bean定义过程三图得留着,可以随时来看processImports处理Import注解getImportscollectImportsConfigurationClassParser的processImportsImportSelector类型处理ImportBeanDefinitionRegistrar处理一般组件类型处理处理ImportRes...原创 2020-04-01 22:24:19 · 691 阅读 · 0 评论 -
Spring 5.x 源码之旅五十一解析配置类加载bean定义过程二
Spring 5.x 源码之旅五十一解析配置类加载bean定义过程二图得留着,可以随时来看主要流程ConfigurationClassPostProcessor的processConfigBeanDefinitions解析出配置类开始解析配置类processMemberClasses处理内部类ConfigurationClassUtils的isConfigurationCandidateproce...原创 2020-04-01 22:23:45 · 526 阅读 · 0 评论 -
Spring 5.x 源码之旅五十解析配置类加载bean定义过程一
Spring 5.x 源码之旅五十解析配置类加载bean定义过程一先上图,有个概念例子MergeConfig配置类ImportBean1简单的import进来的类MyImportSelector可以import其他类进来ImportSelectorBeanMyEnableAnnotationMyImportBeanDefinitionRegistrar扫描的目录bean和属性的配置文件spring...原创 2020-04-01 22:23:10 · 574 阅读 · 0 评论 -
Spring 5.x 源码之旅四十九AOP通知方法执行顺序探究
Spring 5.x 源码之旅四十九AOP通知方法执行顺序探究AOP通知方法如何执行ReflectiveMethodInvocation的proceed循环执行ExposeInvocationInterceptor的invokeAspectJAfterThrowingAdvice的invoke异常通知AbstractAspectJAdvice的invokeAdviceMethod通知方法After...原创 2020-03-31 21:50:40 · 856 阅读 · 0 评论 -
Spring 5.x 源码之旅四十八AOP代理细节三JdkDynamicAopProxy和CglibAopProxy
Spring 5.x 源码之旅四十八AOP代理细节三JdkDynamicAopProxy和CglibAopProxyJdkDynamicAopProxy的getProxyAopProxyUtils的completeProxiedInterfacesCglibAopProxy的getProxyObjenesisCglibAopProxy的createProxyClassAndInstanceJdk...原创 2020-03-31 21:50:11 · 718 阅读 · 0 评论 -
Spring 5.x 源码之旅四十六AOP代理细节一wrapIfNecessary
Spring 5.x 源码之旅四十六AOP代理细节一wrapIfNecessarypostProcessAfterInitialization初始化之后进行代理earlyProxyReferences是什么AbstractAutoProxyCreator的getEarlyBeanReferencewrapIfNecessary代理getAdvicesAndAdvisorsForBeanfindEl...原创 2020-03-31 21:49:38 · 3400 阅读 · 0 评论 -
Spring 5.x 源码之旅四十七AOP代理细节二createProxy
Spring 5.x 源码之旅四十七AOP代理细节二createProxy创建代理AbstractAutoProxyCreator的createProxy创建代理AutoProxyUtils的exposeTargetClass设置属性shouldProxyTargetClassProxyProcessorSupport的evaluateProxyInterfacesProxyProcessorSu...原创 2020-03-31 21:48:57 · 1310 阅读 · 0 评论