文章目录
1.IOC概述
1.1.控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现
1.以前的时候,比如我们以前的时候创建对象如下:
1.2.我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。
1.这里所谓对的与对象关系,比如:
每个对象的别名叫啥,每个对象指向那个具体的clas对象类
2.另外,比如一个对象中,可能需要其他对象支持即:依赖于其他对象,那么我们在创建某个对象的时候,能否根据配置进行创建依赖的对象等等
2.首先了解几个IOC-Spring的核心容器类
2.1.BeanFactory
2.1.1.BeanFactory与FactoryBean的区别
https://blog.csdn.net/u014636209/article/details/107986152
2.1.2.BeanFactory只定义接口的基础的行为规范
2.1.3.BeanFactory的重要的子类实现
2.1.3.1.ListableBeanFactory
图示
概述
1.从上面的ListableBeanFactory我们可以看出来,这个工厂类,主要是解决的关于多个Bean的操作
比如:判断某个Bean是否存在于工厂容器Bean中
根据某个class,获取所有的BeanName
根据某个class以及注解,获取所有的Bean
2.总结下来,主要是针对返回值有可能为多个,如同List类型;
2.1.3.2.HierarchicalBeanFactory
图示
概述
1.这个主要是定义可以获取具有继承关系的父类的工厂类;
2.比如AbstractApplicationContext最终集成了上面的HierarchicalBeanFactory这个类
下面定义了其父工厂:ApplicationContext
2.1.3.3.AutowireCapableBeanFactory
图示
概述
1.AutowireCapableBeanFactory,很明显autowire为“自动注入”,Capable意为“能”
所以AutowireCapableBeanFactory主要是指的“为能进行自动注入而特殊定义的BeanFactory“
2.关于AutowireCapableBeanFactory所规定的具体的方法,我们暂时不做解释;
2.1.4.DefaultListableBeanFactory
1.从上面图中可以看出来,DefaultListableBeanFactory间接的继承了上面我们说的三个类
也就具备了这三个工厂定义的属性和方法;
2.1.5.BeanDefinition 对于Bean属性的定义都存在BeanDefinition
这里定义的都是抽象的方法行为,具体实现由子类处理,比如:AbstractBeanDefinition
2.1.5.1.AbstractBeanDefinition:集成BeanDefinition,实现相关类,同时丰富行为定义方法
2.1.5.2.BeanDefinitionReader:为解析xml中的Bean的定义,然后进行赋值给BeanDefinition对象
BeanDefinitionReader是一个接口,只是定义行为,具体实现,由不同的BeanDefinitionReader,
大家前期可以看默认的AbstractBeanDefinitionReader和XmlBeanDefinitionReader