码迷,mamicode.com
首页 > 编程语言 > 详细

SpringIOC的加载原理

时间:2020-10-13 17:01:59      阅读:25      评论:0      收藏:0      [点我收藏+]

标签:value   XML   工作   加载   ati   autowired   步骤   pos   javac   

IOC控制反转,也成为依赖注入(DI),是一个定义对象依赖的过程,对象只和 构造参数,工厂方法参数,对象实例属性或工厂方法返回相关。容器在创建这些Bean的时候注入这些依赖。这个过程是一个反向的过程,所以命名为依赖反转,对象实例的创建由其提供的构造方法或服务定位机制来实现。这样做最大的好处就是解耦。

Spring把创建Bean的工作交给BeanFactory,那么它到底是怎么创建Bean的呢?

1)加载配置,有两种方式,分别是xml文件配置和注解配置:

由ClassXmlPathApplicationContext去加载配置好的xml文件,或者由AnnotationConfigApplicationContext去加载一个JavaConfig(其实是一堆注解)得到Spring上下文ApplicationContext

2)Bean定义:

ApplicationContext会调用BeanDefinitionReader(读取所有的Bean)BeanDefinitionScanner(扫描到合格的Bean)、BeanDefinitionRegistry(注册合格的Bean),

然后得到BeanDefinition(Bean定义)

3)BeanFactory拿到BeanDefinition后,会根据这些Bean的特性创建出所需要的Bean了

4)实例化Bean,依赖反射

5)填充属性,比如@Value、@AutoWired等

6)初始化Bean,调用initMethod等(在初始化后,会调用很多的Aware接口,比如BeanNameAware、BeanClassLoaderAware、BeanFactoryAware等)

7)放入对象池等待使用,也就是一级缓存

当然,这其中有很多步骤,没有详细列出来,比如扩展节点,在Bean定义前Spring允许我们自主去注册Bean(实现BeanDefinitionRegistryPostProcessor-Bean定义的后置处理器),

在BeanFactory创建Bean前Spring允许我们自主去修改Bean定义(实现BeanFactoryPostProcessor-BeanFactory的后置处理器)

SpringIOC的加载原理

标签:value   XML   工作   加载   ati   autowired   步骤   pos   javac   

原文地址:https://www.cnblogs.com/6wz72/p/13798863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!