![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
徐旌洲
这个作者很懒,什么都没留下…
展开
-
关于Spring IOC的一点理解
1、什么是IOC(控制反转)?在说IOC之前我们首先要搞清这么几个概念,依赖倒置和依赖注入,控制反转(IOC)和依赖注入(DI)它们之间有什么联系和区别依赖倒置原则a、高层模块不应该依赖低层模块,二者都应该依赖于抽象b、抽象不应该依赖于细节,细节应该依赖于抽象由此可见依赖倒置的本质是依赖抽象,而依赖注入的本质是依赖容器接下来我们再说控制反转和依赖注入本质上来讲控制反转和...原创 2019-03-22 01:37:22 · 153 阅读 · 0 评论 -
Spring技术内幕笔记(十三)----autowiring(自动依赖装配)的实现
autowiring在Spring中,我们如果想进行Bean的关系依赖,要么使用显式的BeanDefinition属性值,来对Bean进行依赖,要么使用自动装配的方式来进行依赖,这样的方式为容器提供了很大的遍历,使我们不需要显式的对Bean属性进行依赖关系声明,只要配置好autowiring属性,IOC容器就会根据这个属性的配置,使用反射自动查找属性的类型或名字。在populateBean这个...原创 2019-07-15 23:57:47 · 286 阅读 · 0 评论 -
Spring技术内幕笔记(十二)------BeanPostProcessor的实现
什么是BeanPostProcessorBeanPostProcessor是使用Ioc容器的时经常会遇到的一个特性,这个Bean的后置处理器是一个监听器。将后置处理器向Ioc容器中注册之后,容器中管理的Bean具备了接收Ioc容器事件回调的能力。BeanPostProcessor是一个接口类,它具有两个接口方法,一个是PostProcessorBeforeInitialization,在Bea...原创 2019-07-15 23:25:40 · 170 阅读 · 0 评论 -
Spring技术内幕笔记(十)------lazy-init属性和预实例化
lazy-init属性和预实例化在IOC容器的初始化过程中,主要就是对BeanDefinition的定义,载入,解析和注册。而我们所说的依赖注入是发生在应用第一次向容器所要bean的时候,也就是调用 getBean的时候。spring在启动的过程中主要发生两个过程初始化容器对bean进行初始化并依赖注入(对no-lazy-init属性的bean)我们所有说lazy-init就是懒加载...原创 2019-07-01 00:43:48 · 561 阅读 · 0 评论 -
Spring技术内幕笔记(十一)------FactoryBean的实现
FactoryBean一般情况下,Spring通过反射机制利用bean的Class属性指定实现类来实例化bean。而FactoryBean是一种特殊的bean,是一个工厂bean,可以自己创建bean实例,如果一个类实现了Factorybean接口,则该类可以自己定义创建实例对象的方法,只需要实现getObject方法就好为了区分FactoryBean和FactoryBean创建的bean实例...原创 2019-07-09 00:45:35 · 196 阅读 · 0 评论 -
Spring技术内幕笔记(七)------Bean依赖关系设置#populateBean()
Spring是如何设置实例化对象的依赖关系的在上一篇中,我们已经了解了实例化bean对象的整个过程。在实例化bean对象生成的基础上,我们再来分析一下Spring是如何对这些对象进行处理的,也就是如何设置这些bean对象的依赖关系。在doCreateBean()中当我们实例化Bean对象完成之后,就可以初始化这个Bean对象了,也就是我们所说的设置Bean的依赖关系,populateBean(...原创 2019-06-25 00:16:19 · 718 阅读 · 0 评论 -
Spring技术内幕笔记(九)------ApplicationContext和Bean的初始化及销毁
ApplicationContext的初始化及销毁在Spring中,我们将BeanFactory和ApplicationContext称作它的IOC容器,既然是容器那么他就会存在初始化和销毁的过程,接下来我们就来了解一下容器的初始化和销毁过程。容器的初始化过程发生在AbstractApplicationContext#prepareBeanFactory中/** * Configure ...原创 2019-06-27 00:07:26 · 501 阅读 · 0 评论 -
Spring技术内幕笔记(八)------对Bean Reference的解析
在上篇文章中我们了解到了如何设置Bean之间的依赖关系,以及如何将一个Bean设置到它所依赖的另一个bean的属性中,但是我们还忘了一步,就是对BeanDefinition进行解析,在Spring中是通过BeanDefinitionResolver来对BeanDefinition进行解析的。在populateBean()会创建一个BeanDefinitionValueResolver对象,然后调...原创 2019-06-25 23:44:48 · 1073 阅读 · 0 评论 -
Spring技术内幕笔记(六)------IoC容器依赖注入#doGetBean()
IoC容器依赖注入在上一篇中我们了解了getBean()的大致过程,并对其进行了总结,getBean()就是依赖注入的入口方法,在这个方法里面触发了依赖注入,而依赖注入的前提就是容器中的BeanDefinition数据已经建立好的前提下进行的。getBean()是依赖注入的起点,之后会调用createBean。在createBean中,Bean对象会依据BeanDefinition定义的要求生...原创 2019-06-04 00:39:57 · 448 阅读 · 0 评论 -
Spring技术内幕笔记(四)------IoC容器初始化过程#BeanDefinition在容器中的注册
Ioc容器的初始化过程在上一篇中,我们已经分析过BeanDefinition在Ioc容器中的载入和解析过程,在经过以上步骤之后,用户所定义的BeanDefinition信息已经在IoC容器中建立起来自己的数据结构以及相应的数据表示,但是这些数据还是不能供IoC容器直接使用,我们需要将这些数据注册到IoC容器中。在DefaultListableBeanFactory中是通过一个Concurrent...原创 2019-05-30 00:20:13 · 161 阅读 · 0 评论 -
Spring技术内幕笔记(三)------IoC容器初始化过程#BeanDefinition的载入和解析
IoC容器的初始化过程在上一篇中我们讨论了对代表BeanDefinition的Resource定位的分析后,接下来就需要了解整个BeanDefinition信息的载入过程。在AbstractApplicationContext#refresh()方法中,有这样一段代码ConfiguableListableBeanFactory beanFactory = obtainFreshBeanFac...原创 2019-05-29 01:18:32 · 175 阅读 · 0 评论 -
Spring技术内幕笔记(二)------IoC容器初始化过程#BeanDefinition的资源定位
IoC容器的初始化过程在上一篇中提到,在ApplicationContext的构造方法中有一个refresh()方法,这个方法标志着IoC容器的正式启动。IoC容器的初始化主要包括以下三个基本过程Resource定位过程BeanDefinition的载入向IoC容器注册这些BeanDefinition的过程Spring将这三个过程分开同时使用不同的模块来完成,通过这样的设计可以让用户...原创 2019-05-24 01:06:32 · 150 阅读 · 0 评论 -
Spring技术内幕笔记(五)------IoC容器依赖注入#doGetBean()
IoC容器依赖注入在前几篇笔记中,我们已经了解到如何对IoC容器进行初始化,初始化的过程主要是在IoC容器中建立BeanDefinition的相关映射,接下来我们就开始研究,如何利用这些BeanDefinition使IoC容器可以对Bean的依赖关系进行注入的。getBean()在通常情况下,依赖注入发生的过程是用户第一次向IoC容器索要Bean时触发的,当然如果在BeanDefinitio...原创 2019-05-31 01:01:49 · 182 阅读 · 0 评论 -
Spring技术内幕笔记(一)------BeanFactory和ApplicationContext
BeanFactory的应用场景BeanFactory接口定义了IoC容器最基本的形式,并且提供了IoC容器应该遵守的最基本的服务起源,同时也是我们使用IoC容器BeanFactory为我们提供了以下操作通过接口方法containsBean让用户能够判断容器是否含有指定名字的Bean通过接口方法isSingleton来查询指定名字的Bean是否是Singleton类型的Bean。对于S...原创 2019-05-23 00:19:01 · 188 阅读 · 0 评论 -
Spring技术内幕笔记(十四)------AOP概述
AOP概念回顾AOP是Aspect-Oriented Programming(面向方面编程或面向切面)的简称。面向切面编程为我们提供了有别于面向对象的角度,来思考程序结构,通过这种方式来弥补面向对象的不足。面向对象强调的是一切皆对象。同样我们也可以说面向接口,一切皆接口。面向服务一切皆服务。同理面向切面。我们拿面向接口举例,强调的就是我们在开发中操纵的都是一些接口,而不去关心其具体实现。...原创 2019-07-19 00:01:21 · 129 阅读 · 0 评论