1、Spring工厂的概念和结构体系

spring工厂的基本概念

  1. spring的核心:工厂(容器)
  2. spring工厂的职责:对象的创建与存储。创建就不用多说了,存储:spring把创建好的对象存储起来(存储在spring工厂(容器)中),方便以后使用。但是存储有个前提,就是这些对象必须是单实例。
  3. spring存储单实例对象的方式:map结构,java是面向对象思想,那么多个对象存储的方式就是map
  4. 最常用的工厂:ApplicationContext(高级工厂)。
  5. 前期学习会以 beanFactory 工厂来开展学习。这个工厂也是spring最底层的工厂。

spring结构体系

Spring在设计的时候,严格遵守单一职责,所以Spring到目前位置,衍生成了一个非常庞大的体系。而最顶级的就是BeanFactory接口,整个体系都是由BeanFactory衍生出来的。

而衍生出来的产物,子接口一定是在父接口之上提供了一些独有的功能。

BeanFactory接口

Spring最底层的工厂,定义了工厂的基本操作。

下面介绍一下具有独特能力的几个子接口:

HierarchicalBeanFactory接口

beanFactory直接的子接口,这个子接口让工厂具有了继承的能力,也就是我们所说的父子容器、父子工程

AutowireCapableBeanFactory接口

  1. beanFactory直接的子接口。
  2. 这个子接口让工厂具有了自动注入的能力。这里说的自动注入的能力也就是定义xml的bean标签的时候,有个属性是autowire属性,这个属性其中有两个属性值,byName,byType

  1. 所以子接口让工厂具有了初始化能力。
    1. 接口实现 intinitialBean 接口。
    2. 重写接口定义的 afterPropertiesSet 方法。
    3. 在spring容器创建bean的时候,会调用此方法进行初始化操作。
  2. 这个子接口让工厂具有了销毁的能力。
    1. 接口实现 DisposeBean 接口。
    1. 重写接口定义的 destroy 方法。
    2. 在spring容器关闭的时候,会调用此方法进行销毁操作。

ListableBeanFactory接口

  1. beanFactory直接的子接口
  2. 通过这个接口,可以获取相关的配置信息。
    1. constrainsBeanDefinition:判断是否存在某个bean的定义信息。
    2. getBeanNameForType:基于类型获取所有的bean的名字

ConfigurableBeanFactory接口

这个工厂是个可配置工厂。

  1. 配置对象是单实例还是多实例
  2. 类型转换器的功能:在xml中配置bean标签时,属性时日期类型的字符串时(2020-11-11)需要将此字符串转换成日期Date类型,这时候就需要自定义类型转换器了。
  3. 后置处理bean:beanPostProcessor

ApplicationContext接口

上述的每个工厂都具有自己独有的能力,但是最后所有的能力都集成在了此工厂上。

DefaultListableBeanFactory类

此类同样也集成了上述所有工厂的能力,这个也是spring工厂体系中最为核心的一个类。

XmlBeanFactory类

  1. 此类是DefaultListableBeanFactory的一个子类,所以这个类也是融合了上面所有工厂的能力。
  2. 但是他有一点额外的好处,这个类可以使用基于xml配置的信息,完成对象的创建,主要的依赖于XmlBeanDefinitionReader这个工具类。

总结:

  1. 了解最底层的工厂BeanFactory。
  2. 了解BeanFactory的直接子接口所具备的各自独特的功能。
  3. 知道 ApplicationContext 接口是集成性质的一个接口,具有他们所有的能力。
  4. 知道 DefaultListableBeanFactory 类是集成性质的一个类,具有他们所有的能力。
  5. 知道 DefaultListableBeanFactory 的子类 XmlBeanFactory ,因为继承所以此类也是集成性质的类,具有他们所有的能力。

主要关注XmlBeanFactory类。这个接口目前已经被弃用了,但是因为这个工厂是比较底层的工厂,前期用这个工厂进行展开学习,等熟悉了整体流程之后,再用别的工厂进行替代。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值