Spring源码
文章平均质量分 93
Spring源码总结
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
Spring AOP原理分析(四)--AnnotationAwareAspectJAutoProxyCreator#postProcessBeforeInstantiation源码解析
一、简介AnnotationAwareAspectJAutoProxyCreator 实现了几个重要的扩展接口:1)、实现了 BeanPostProcessor 接口:实现了 postProcessAfterInitialization()方法; 2)、实现了 InstantiationAwareBeanPostProcessor 接口:实现了 postProcessBeforeInstantiation()、postProcessAfterInstantiation()方法; 3)、实现了 S原创 2022-01-21 17:42:37 · 1060 阅读 · 0 评论 -
Spring事件监听机制
目录一、概要二、观察者模式三、Spring事件监听相关角色四、Spring事件监听案例五、Spring事件监听源码剖析六、总结一、概要Spring提供了一套完整的事件发布和监听机制,它在JDK事件监听的基础上进行了一些扩展,并使用IOC容器来管理相关组件,如监听器、事件发布器等,使得用户不需要关心事件发布和监听的具体细节,降低了开发难度。如果项目中有这样的场景,当一个 Bean 处理完一个任务之后,希望另一个 Bean 知道并能做相应的处理逻辑,这时我们就可以使用Sp原创 2022-01-07 16:54:28 · 2006 阅读 · 0 评论 -
Spring循环依赖原理
目录一、什么是循环依赖?二、构造器参数循环依赖三、单例的setter注入循环依赖四、多例的setter注入循环依赖五、Spring如何解决循环依赖六、扩展七、总结一、什么是循环依赖?循环依赖,指的是一个或多个对象实例之间存在直接或间接的依赖关系,这种依赖关系构成了构成一个环形调用。直接依赖: 如A依赖B,B依赖A。间接依赖: 如A依赖B,B依赖C,C依赖A。二、构造器参数循环依赖Spring循环依赖分为构造器参数依赖和属性setter依赖,先来说说构造原创 2021-12-29 23:45:00 · 1819 阅读 · 0 评论 -
Spring IOC源码笔记(一)
目录一、概要二、准备环境三、IOC启动过程分析四、prepareRefresh():创建 Bean 容器前的准备工作五、obtainFreshBeanFactory():创建Bean容器六、prepareBeanFactory(beanFactory):准备Bean工厂七、postProcessBeanFactory(beanFactory):留给子类对BeanFactory定制化处理八、总结一、概要首先需要明白什么是IOC?IOC(Inversion of.原创 2021-12-08 21:34:36 · 790 阅读 · 0 评论 -
Spring事务原理分析(一)--@EnableTransactionManagement 到底做了什么?
目录一、概述二、事务的ACID属性三、事务的隔离级别四、事务的传播行为五、Spring声明式事务环境搭建六、@EnableTransactionManagement分析七、AutoProxyRegistrar类分析八、ProxyTransactionManagementConfiguration类分析九、总结一、概述在分析Spring事务原理之前,我们有必要先回顾下数据库事务相关的知识。如事务的概念、事务的属性、事务隔离级别、事务传播行为等。首先介绍一些什么是原创 2022-02-01 08:00:00 · 13920 阅读 · 0 评论 -
Spring AOP原理分析(一)-- AOP相关概念
一、AOP概述我们知道,使用面向对象编程(OOP)有一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志、权限校验等,我们只有在每个对象里面引用公共行为,这样程序中就产生了大量的重复代码,程序就不便于维护了,所以就有了对面向对象编程的不从,即面向切面编程(AOP),AOP关注的方向是横向的,而OOP关注的是纵向。AOP是Aspect Oriented Programming的缩写,意为:面向切面编程。AOP是指在程序运行期间动态地将某段代码切入到指定方法指定位置进行运行的编程方式原创 2022-01-12 10:04:25 · 926 阅读 · 3 评论 -
Spring事务原理分析(三)--事务代理调用过程
目录一、概述二、事务代理调用过程分析三、createTransactionIfNecessary()创建事务四、invocation.proceedWithInvocation()执行增强方法五、commitTransactionAfterReturning(txInfo)提交事务六、completeTransactionAfterThrowing(txInfo, ex)异常回滚事务七、总结一、概述通过前面一篇文章,我们已经了解了AOP切面织入生成代理对象的过程,当B原创 2022-02-11 10:06:48 · 2235 阅读 · 5 评论 -
Spring getBean()源码笔记
目录一、概要二、getBean(String name):获取指定名称的bean三、总结一、概要通过前面几篇文章对IOC容器创建流程的详细分析,相信大家对IOC有了一个全新的认识,但是我们还不知道Spring如何获取Bean实例的,本篇文章,我们就关于获取 Bean 实例的过程做一个比较详细的分析。二、getBean(String name):获取指定名称的beanorg.springframework.beans.factory.support.AbstractBeanF.原创 2021-12-17 20:28:24 · 1177 阅读 · 0 评论 -
Spring AOP原理分析(三)-- AnnotationAwareAspectJAutoProxyCreator#initBeanFactory()源码
一、setBeanFactory()方法的执行流程先来看看AnnotationAwareAspectJAutoProxyCreator的继承关系:AnnotationAwareAspectJAutoProxyCreator==> 继承自AspectJAwareAdvisorAutoProxyCreator==> 继承自AbstractAdvisorAutoProxyCreator==> 继承自AbstractAutoPro...原创 2022-01-18 15:52:34 · 542 阅读 · 0 评论 -
Spring AOP原理分析(五)-- 创建代理对象
目录一、简介二、AOP创建代理对象流程三、总结一、简介前面一篇文章,我们介绍了AnnotationAwareAspectJAutoProxyCreator实现InstantiationAwareBeanPostProcessor接口背后所做的一些事情,最重要的就是解析切面,将切面对应的通知方法包装成Advisor增强器,并存入缓存中,方便后面创建代理对象时使用。在类的层级中,我们看到AnnotationAwareAspectJAutoProxyCreator继承了Abstract原创 2022-01-26 09:49:21 · 1626 阅读 · 0 评论 -
Spring createBean()源码笔记
目录一、概要二、createBean():创建bean实例三、resolveBeforeInstantiation(String beanName, RootBeanDefinition mbd)四、doCreateBean():真正创建bean实例的方法五、createBeanInstance():实例化bean对象六、applyMergedBeanDefinitionPostProcessors():应用后置处理器 MergedBeanDefinitionPostProcesso原创 2021-12-22 20:14:39 · 1632 阅读 · 0 评论 -
Spring事务原理分析(二)--@Transactional事务属性的解析
目录一、概述二、@Transactional事务属性的解析一、概述前面一篇文章,我们介绍了@EnableTransactionManagement注解在Spring内部的实现,它通过TransactionManagementConfigurationSelector组件引入AutoProxyRegistrar、ProxyTransactionManagementConfiguration,帮我们注册了几个重要的bean:InfrastructureAdvisorAutoProxyCrea原创 2022-02-06 14:39:49 · 803 阅读 · 0 评论 -
Spring IOC源码笔记(二)
目录一、概述二、invokeBeanFactoryPostProcessors(beanFactory):执行BeanFactoryPostProcessor后置处理器的postProcessBeanFactory()增强方法三、registerBeanPostProcessors(beanFactory):注册BeanPostProcessor四、initMessageSource():为上下文初始化MessageSource五、initApplicationEventMultic原创 2021-12-12 20:00:08 · 686 阅读 · 0 评论 -
Spring IOC源码笔记(三)
目录一、finishBeanFactoryInitialization(beanFactory):初始化所有剩下的非懒加载的单例Bean二、finishRefresh():完成上下文的刷新工作三、总结一、finishBeanFactoryInitialization(beanFactory):初始化所有剩下的非懒加载的单例BeanfinishBeanFactoryInitialization(beanFactory)主要完成所有剩下的非懒加载的单例bean的初始化,这个方法非常重要,可以原创 2021-12-14 20:01:20 · 1407 阅读 · 0 评论 -
Spring AOP原理分析(二)--@EnableAspectJAutoProxy功能分析
目录一、概述二、@EnableAspectJAutoProxy原理三、总结一、概述前面一篇文章,我们介绍了Spring AOP中一些相关术语,并演示了如何利用AOP。我们大致了解到,要开启注解版的Spring AOP功能的话,我们可以在配置类上添加@EnableAspectJAutoProxy注解,如下:@Configuration// @EnableAspectJAutoProxy用于开启注解版的Spring AOP功能,类似使用XML方式的<aop:aspectj-原创 2022-01-14 15:00:29 · 6286 阅读 · 1 评论 -
Spring AOP原理分析(六)-- AOP执行流程
目录一、简介二、AOP执行流程三、总结一、简介在前面一篇文章中,我们介绍了 AOP 代理的创建过程,那么代理对象是创建出来了,在什么时候使用呢?通知方法又是在何处被调用了?带着这些问题,我们以前面的AOP示例代码,边调试边介绍AOP代理的方法的完整执行过程。二、AOP执行流程先回顾一下我们前面使用AOP的切面代码:// @Aspect:告诉Spring这是一个切面类@Aspect@Componentpublic class SimpleAspect { .原创 2022-01-31 08:30:00 · 3039 阅读 · 0 评论 -
Spring中@Autowired注解的工作原理
目录一、概述二、@Autowired注解的用法三、@Autowired自动装配原理四、源码调试环境五、AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinition()源码六、AutowiredAnnotationBeanPostProcessor#postProcessProperties()源码七、总结一、概述@Autowired注解大家再熟悉不过了,在项目中使用 @Autowired注解的比例原创 2022-02-18 16:17:25 · 7939 阅读 · 0 评论