![](https://img-blog.csdnimg.cn/a6a80ed05fb04263a125bb73f12fad02.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 96
以图解的方式深入讲解Spring的原理和源码,适合新手入门阅读Spring源码,也适合老手复习用。
黄俊懿
放下期待、不抱希望地努力,踏踏实实,能走多远是多远。
展开
-
人人都能看懂的Spring源码解析,spring的事件监听机制
ContextClosedEvent 上下文关闭事件ContextRefreshedEvent 上下文刷新完成事件ContextStartedEvent 上下文启动事件ContextStoppedEvent 上下文停止事件它们都继承,而ApplicationContextEvent又继承了ApplicationEvent。与Spring上下文状态变化相关的事件都继承ApplicationContextEvent,而ApplicationEvent类型的事件则范围更广。其中。原创 2023-06-24 10:26:49 · 272 阅读 · 0 评论 -
人人都能看懂的Spring源码解析,Spring声明式事务关于传播特性、事务挂起与恢复的处理
上一篇文章已经对PlatformTransactionManager事务管理器进行讲解,了解到它有三个抽象方法getTransaction、commit、rollback(分别对应开启事务并获取事务对象、提交、回滚)需要我们实现。但其实Spring已经提供了一个抽象事务管理器,实现了这三个方法,而另外预留了。原创 2023-05-24 20:51:34 · 1518 阅读 · 2 评论 -
人人都能看懂的Spring源码解析,Spring声明式事务是如何实现的
总的来说,Spring声明式事务就是通过AOP省去了编程式事务的代码,把编程式事务的模板代码抽到了增强逻辑中,不需要再让用户编程编程式事务的模板代码。原创 2023-04-22 22:02:11 · 313 阅读 · 0 评论 -
人人都能看懂的Spring源码解析,Spring如何处理AOP
是Spring AOP处理的入口,它实现了BeanPostProcessor的postProcessAfterInitialization方法,会在bean的初始化环节被回调。AbstractAutoProxyCreator的方法判断当前对象是否需要代理。如果需要代理,会通过ProxyFactory创建代理对象;如果不需要,则返回原对象。以上就是关于Spring AOP介绍的全部内容,下面做一个小总结。原创 2023-03-27 21:07:14 · 718 阅读 · 0 评论 -
人人都能看懂的Spring源码解析,Spring如何解决循环依赖
两个Bean,BeanA和BeanB,它们都有一个引用指向对方,这就是最简单的循环依赖。还有更复杂的循环依赖,涉及到多个bean,只要其中形成环,就是循环依赖。以上就是关于“Spring如何处理循环依赖”的讲解的全部内容。Spring是通过三级缓存解决循环依赖的。一级缓存是singletonObjects;二级缓存是earlySingletonObjects;三级缓存是singletonFactories。原创 2023-03-14 21:54:59 · 1759 阅读 · 2 评论 -
简单易懂值得收藏的Spring源码解析,依赖注入和bean的初始化
以上就是依赖注入和bean的初始化的全部内容,下面做一个简单总结。byName模式会通过属性名调用getBean方法获取依赖对象,然后封装为PropertyValue放入到PropertyValues中,后面统一进行注入处理。原创 2023-03-06 21:28:22 · 1116 阅读 · 0 评论 -
简单易懂又非常牛逼的Spring源码解析,推断构造与bean的实例化
以上就是推断构造与bean的实例化源码解析的所有内容,下面做一个总结。推断构造首先会经过第一次筛选,筛出一个构造器数组然后构造器数组不为空,或者当前BeanDefinition指定为构造器注入,或者我们在配置中指定了构造器参数,或者我们getBean的时候传递了参数,那么就会经历第二次筛选,选出一个最合适的构造器以及构造器参数否则就会使用无参构造器进行实例化。原创 2023-02-27 19:48:31 · 772 阅读 · 1 评论 -
简单易懂又非常牛逼的Spring源码解析,ConfigurationClassPostProcessor的具体逻辑
本篇文件将会接着上一篇文章,对ConfigurationClassPostProcessor里面的具体逻辑进行详细解析,还是尽量做到对新手友好,尽量以图解的形式进行解析。ConfigurationClassPostProcessor的主要作用就是解析@Configuration注解修饰的配置类里面的配置信息(比如@Bean),生成BeanDefinition,注册到容器中。原创 2023-02-20 07:00:00 · 619 阅读 · 0 评论 -
人人都能看懂的Spring源码解析,配置解析与BeanDefinition加载注册
每一位看到本篇文章的人,你们好,我是黄俊懿。之前写过两篇关于Spring原理解析的文章,是以对新手友好的出发点去写的,以画图的形式进行讲解,没有对Spring的源码进行详细的解析,目的是希望一些没有看过Spring源码的小伙伴能够很好的理解。本篇文章是关于配置解析与BeanDefinition加载注册的源码解析,也就是从xml配置或者注解配置被解析为BeanDefinition放入容器中的这个过程。xml配置方式由XmlBeanDefinitionReader进行配置文件的解析与BeanDefinit原创 2023-02-15 17:57:44 · 937 阅读 · 0 评论 -
简单易懂的Spring扩展点详细解析,看不懂你来打我
以上就是本文对Spring扩展点的所有介绍,基本上已经涵盖了Spring里面比较重要的扩展点,当然还有其他的一些扩展点没有介绍到,但是由于篇幅关系,就不全部罗列了。总结性的文字就不多说了,因为本文的字已经够多的了,这里就放两张图,供大家细品吧。原创 2023-01-04 23:00:54 · 4615 阅读 · 2 评论 -
人人都能看懂的Spring底层原理,看完绝对不会懵逼
首先,Spring把我们交给他管理的对象,称为Bean,然后又定义了BeanDefinition(Bean定义)去描述这些Bean那为什么要弄一个BeanDefinition呢?BeanDefinition相当于是对Class类元数据信息的一种扩展。因为Spring不是简单的帮我们创建一个对象就完事,他需要知道如何创建这个对象,如何给它的属性赋值,注入哪些值,有哪些生命周期回调函数等等,单凭一个Class对象,不足以描述一个Bean的所有属性。原创 2022-12-17 18:53:10 · 5311 阅读 · 0 评论 -
Spring源码分析——AOP
Spring源码分析——AOPSpring源码分析——AOP寻找 aop:aspectj-autoproxy 注解对应的解析器了解AspectJAutoProxyBeanDefinitionParser对应的行为分析AnnotationAwareAspectJAutoProxyCreator主要行为创建proxy过程分析JdkDynamicAopProxy.getProxy()方法invoke()方法总结Spring源码分析——AOP寻找 aop:aspectj-autoproxy 注解对应的解析器原创 2020-08-16 15:48:26 · 397 阅读 · 0 评论 -
Spring源码分析——循环依赖
Spring源码分析——循环依赖Spring源码分析——循环依赖具体流程尝试从缓存中获取的具体流程是否循环依赖依赖的判断提前暴露处理属性注入触发getBean的位置循环引用完成后对bean的类型进行判断Spring源码分析——循环依赖在spring中,涉及到一个概念,叫做循环依赖,或者叫做循环引用。意思就是说,一个bean他的属性,依赖了另外一个bean,而他所依赖的bean,有恰好依赖与他。这种情况下,spring对此做了特殊处理,但是仅限于单例模式。具体流程处理循环依赖的具体流程,首先是在一个原创 2020-08-16 15:46:10 · 297 阅读 · 0 评论 -
Spring源码分析——SpringIOC
Spring源码分析——SpringIOCSpring源码分析——SpringIOC开始ApplicationContext子类的构造参数Spring源码分析——SpringIOC开始在Spring中,有两种配置方式,一种是xml版本的,另外一种是注解版本的。他们分别对应不同的ApplicationContext。xml版本的是ClassPathXmlApplicationContext,而注解版本的是AnnotationConfigApplicationContext。// 用我们的配置文件来启动原创 2020-08-16 15:45:18 · 526 阅读 · 1 评论