01-Spring的体系结构

(1)BeanFactory:
在这里插入图片描述
(1.1) AutowireCapableBeanFactory: 接口定义了Bean的自动装配规则
在这里插入图片描述
(1.2)HierarchicalBeanFactory : 接口定义了是有继承关系的,也就是每个bean可能是有父Bean
在这里插入图片描述
这个接口只有两个方法:

BeanFactory getBeanFactory();
boolean containsBean(String name);

在这里插入图片描述
ConfigurableApplicationContext:
在这里插入图片描述

AbstractApplicationContext:
在这里插入图片描述
(1.3)ListableBeanFactory:表示这些bean是可列表的
在这里插入图片描述


在这里插入图片描述

分析:
其中BeanFactory最为顶层的一个接口类,它定义了IOC容器的基本功能规范,之所以要定义那么多层次的接口,是因为每个接口都有它使用的场合,主要是为了区分在Spring内部在操作过程中对象的传递和转换过程中,对对象的数据访问所做的限制

BeanFactory里只对IOC容器的基本行为做了定义,根本不关心你的bean是怎样加载的,正如我们只关心工厂里得到的是什么产品对象,至于工厂是怎么生产的,这个基本接口是不关心的

而要知道工厂是如何生产对象的,我们需要具体看IOC容器的实现,Spring提供了许多IOC容器的实现,比如:
1.XmlBeanFactory,2.ClasspathXmlApplicationContex,3.FileSystemApplicationContex 等.
其中XmlBeanFactory就是针对最基本的IOC容器的实现,这个IOC容器可以读取XML定义的BeanDefinition(XML文件中对Bean的描述)

XmlBeanFactory的类层次结构图:

在这里插入图片描述
ApplicationContext这个接口就比较丰富了:
在这里插入图片描述

ApplicationContext是Spring容器提供的一个高级的IOC容器,它除了提供IOC容器的基本功能之外,还为用户提供了以下的附加服务:

  • 1.支持信息源,可以实现国际化 (实现的是 MessageSource接口)

    扫描二维码关注公众号,回复: 3455002 查看本文章
  • 2.访问资源 (实现的是ResourcePatternResolver接口)

  • 3.支持应用事件 (实现的是ApplicationEventPublisher接口)

(2) BeanDefinition:
概述:Spring IOC容器管理了我们定义的个各种Bean对象及其相互的关系,Bean对象在Spring实现中是以BeanDefinition来描述的:

在这里插入图片描述

Bean的解析过程非常复杂,功能被分得很细,因为这里需要被扩展的地方很多,必须要保证足够的灵活性,以应对可能的变化.
Bean的解析 主要就是对Spring配置文件的解析,这个解析主要是通过XmlBeanDefinitionReader这个类来完成的:
在这里插入图片描述

根据咕泡学院的知识整理而来:
咕泡学院确实讲得很好:

网站链接:
https://www.gupaoedu.com/

猜你喜欢

转载自blog.csdn.net/qq_38200548/article/details/82749378