![](https://img-blog.csdnimg.cn/20210511161137762.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spring源码学习
文章平均质量分 92
spring源码学习
大龄码农生活
这个作者很懒,什么都没留下…
展开
-
Spring bean的加载过程 : doGetBean概述
一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在Spring容器的初始化过程后期 通过调用AbstractApplicationContext#finishBeanFactoryInitialization 方法来实例化了所有的非延迟加载bean。在这里面就通过 beanFactory.preInstantiateSingletons(); 调用了一个非常关键的方法 AbstractBeanFactory#getBean(jav原创 2021-03-01 11:02:03 · 623 阅读 · 0 评论 -
Spring 最重要的bean源信息 : BeanDefinition接口相关解释
本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。很多内容来自别人博客简介现如今,我们一般获取对象的方式有两种,一种是手动直接 new;另一种是交给 Spring 管理,Spring 将管理的对象称之为 Bean,容器会先实例化 Bean,然后自动注入,实例化的过程就需要依赖 BeanDefinition。对于基于Spring框架开发的一个应用系统,其中每一个bean都来自于一个bean定义:开发人员的某个bean定义,框架自身的某.原创 2021-02-28 11:47:07 · 695 阅读 · 0 评论 -
spring BeanFactory扩展点:BeanFactoryPostProcessor 后置处理接口
一、概述BeanFactoryPostProcessor 为spring在容器初始化时对外对外暴露的扩展点,Spring IoC容器允许BeanFactoryPostProcessor在容器加载注册BeanDefinition完成之后读取BeanDefinition(配置元数据),并可以修改它。也就是spring ioc运行BeanFactoryPostProcessor在容器实例化任何其他的bean之前读取配置元数据,并有可能修改它;如果业务需要,可以配置多个BeanFactoryPostProc原创 2021-02-24 18:19:34 · 396 阅读 · 0 评论 -
spring bean扩展点:后处理器 BeanPostProcessor
经过前面的文章介绍,我们了解的sping bean生命周期,在其中伴随着大量的后置处理器的使用。为了弄清楚Spring框架,我们需要分别弄清楚相关核心接口的作用,本文来介绍下BeanPostProcessor接口。一、BeanPostProcessor所谓的BeanPostProcessor翻译过来就是Bean后处理器。作用是在Bean对象在实例化和依赖注入完毕后,在显示调用初始化方法的前后添加我们自己的逻辑。注意是Bean实例化完毕后及依赖注入完成后触发的。1.1. 什么是 BeanPos..原创 2021-02-23 17:26:45 · 1294 阅读 · 1 评论 -
spring bean生命周期五---Spring Bean 销毁阶段
这个阶段比较简单。分析Bean的销毁阶段-和Bean 的初始化对应!这里主要分为:Spring Bean 销毁前阶段、销毁阶段。一、Spring Bean 销毁前阶段这里主要是处理DestructionAwareBeanPostProcessor#postProcessBeforeDestruction的实现类回调如自己实现:public class MyDestructionAwareBeanPostProcessor implements DestructionAwareBe.原创 2021-02-19 22:42:37 · 935 阅读 · 0 评论 -
spring bean生命周期四---Spring Bean 初始化阶段(Initialization)
目录概述一、initializeBean2.1、invokeAwareMethods - 激活 Aware 方法2.2、Spring Bean 初始化前阶段第七次调用后置处理器2.3、invokeInitMethods - 激活自定义的init方法2.4、Spring Bean 初始化后阶段第八次调用后置处理器postProcessAfterInitialization三、Spring Bean 初始化完成阶段四、测试代码案例:概述本文是笔者阅读Sprin..原创 2021-02-19 22:29:45 · 2077 阅读 · 3 评论 -
spring bean生命周期三---Spring Bean populateBean 属性填充阶段
前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。我们在上一篇文章:spring bean生命周期二---Spring Bean实例化( Instantiation)阶段中完成了bean的实例化过程,但是属性内容还没有注入,本文就是将bean的属性进行注入的过程。一、populateBean - 概述我们这里先整体过一遍代码,后面进行每一步的详细解读。// AbstractAutowireCapableBeanFact..原创 2021-02-18 23:13:53 · 882 阅读 · 0 评论 -
spring bean生命周期二---Spring Bean实例化( Instantiation)阶段
经过上一篇的BeanDefinition 生成过程后,已经得到实例化bean的相关的源信息,这一篇重点介绍spring bean的实例化的过程,也就是我们通常的创建对象,不过这样需要推断构造器,使用反射实例化对象。此阶段主要包括: Spring Bean 实例化前阶段、Spring Bean 实例化阶段、Spring Bean 实例化后阶段等阶段。一、这里涉及几个比较重要的后置处理器:1、InstantiationAwareBeanPostProcessor :Spring Bean .原创 2021-02-18 18:49:57 · 1225 阅读 · 2 评论 -
spring bean生命周期一---前置阶段:Spring BeanDefinition生成阶段
Spring Bean的生命周期是Spring面试热点问题。这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。在spring bean创建过程 依赖BeanDefinition 中的信息处理bean的生产。BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口。在处理配置文件生成BeanDefinition主要经过:...原创 2021-02-17 22:23:05 · 575 阅读 · 0 评论 -
spring源码学习---Sping ioc 依赖来源
依赖来源主要包括:依赖查找的来源和 依赖注入的来源。其中依赖注入的来源比依赖查找来源多一个非Spring 容器管理对象(也可以叫游离对象)一、依赖查找的来源1.1、Spring BeanDefinition 和单例对象1.2、Spring 內建BeanDefintion1.3、Spring 內建单例对象二、依赖注入来源 依赖注入的来源包括 自定义Spring BeanDefinition 、单例对象、Spring 內建BeanDefintion、Sprin...原创 2020-07-11 10:18:55 · 149 阅读 · 0 评论 -
spring源码学习---@Autowired 注入源码分析和自定义依赖注入
一、简介 众所周知,Spring的依赖注入(DI)对Spring IOC 有着举足轻重的作用,是Spring灵魂所在。本篇文章就从日常开发中最常用的注解@Autowired开始,着手分析Spring是如何通过它们将Bean所需的外部资源注入其中.1.1、@Autowired 注入规则@Autowired可以应用在非静态字段、非静态方法、构造器上面注入bean。1.2、@Autowired 注入过程 元信息解析 依赖查找 依赖注入(字...原创 2020-07-08 16:53:15 · 1630 阅读 · 0 评论 -
spring源码学习---Spring IoC 依赖注入
一、依赖注入Dependency injection直接在容器启动时通过构造器,getter setter等形式注入依赖。优点:性能高,侵入小与依赖查询两者区别:区别在于依赖的对象是否为主动获取,是的话,就是依赖查找,否则就是依赖注入,由框架绑定完成。依赖查找 VS 依赖注入二、依赖注入的模式和类型• 手动模式-配置或者编程的方式,提前安排注入规则 • XML 资源配置元信息 • Java 注解配置元信息 • API 配置元信息 (一般对容器扩展使用)...原创 2020-07-03 17:56:10 · 247 阅读 · 0 评论 -
spring 源码学习---IOC相关内容与依赖查找
一 概念 IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类而不是自己主动去找,换句话说 就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依...原创 2020-07-01 17:50:37 · 271 阅读 · 0 评论 -
spring 源码学习---spring基础之(IOC和DI)
spring是一个轻量级的开源的框架。 其核心两部分是:1、ioc(控制反转) 2 、aop 面向切面编程 IOC控制反转 1、浅谈控制反转(Inversion of Control,IOC)我们首先先来了解一下控制二字,也就是在控制“正”转的情况下,在任何一个有请求作用的系统当中,至少需要有两个类互相配合工作,在一个入口类下使用new关键字创建另一个类的...原创 2018-06-26 21:00:26 · 239 阅读 · 0 评论