第一节 Spring bean 的核心类介绍

一、版本与目录结构

对于所有非初学者来说认识一个maven项目的结构是很容易上手的,在此还是啰嗦的说一句创建过程,本猿是通过ideal工具直接new一个spring项目之后得到一个项目如下包含了spring核心的所有依赖jar文件;
在这里插入图片描述

  1. src/main/java 用于展现 Spring 的主要逻辑。
  2. src/main/resources 用于存放系统的配置文件。
  3. src/test/java 用于对主要逻辑进行单元测试。
  4. src/test/resources 用于存放测试用的配置文件。

核心类的介绍

  1. 关系
    通过 beans 工程的结构介绍,我们现在对 beans 的工程结构有了初步的认识,接下来我们来认识一下核心的类文件,既然是探索spring那么最有名的就是BeanFactory了,它是整个bean加载的核心部分。
    在这里插入图片描述
  2. 作用
    从上面的类图以及层次结构图中,我们可以很清晰地从全局角度了解 DefaultListableBean- Factory的脉络。让我们先简单地了解各个类的作用;
  • AliasRegistry: 定义对 alias 的简单增删改等 操作。
  • SimpleAliasRegistry: 主要使用 用map 作为 为alias 的缓,并对接口AliasRegistry行进行实现。
  • SingletonBeanRegistry: 定义对单例的注册及获取。
  • DefaultSingletonBeanRegistry: 对接口 SingletonBeanRegistry 各函数的实现。
  • HierarchicalBeanFactory: 继承 BeanFactory, 也就是在 BeanFactory 定义的功能的基础上增加了对 parentFactory 的支持。
  • BeanDefinitionRegistry: 定义对 BeanDefinition 的各种增删改操作。
  • FactoryBeanRegistrySupport: 在 DefaultSingletonBeanRegistry 基础上增加了对 FactoiyBean 的特殊处理功能。
  • ConfigurableBeanFactory: 提供配置 Factory 的各种方法。
  • ListableBeanFactory: 根据各种条件获取 bean 的配置清单。
  • AbstractBeanFactory: 综合 FactoryBeanRegistrySupport 和 ConfigurableBeanFactory 的 功能。
  • AutowireCapableBeanFactory: 提供创建 bean 、自动注入、初始化以及应用 bean 的后 处理器。
  • AbstractAutowireCapableBeanFactory: 综合 AbstractBeanFactory 并对接口 Autowire Capable BeanFactory 进行实现。
  • ConfigurableListableBeanFactory: BeanFactory 配置清单,指定忽略类型及接口等。
  • DefaultListableBeanFactory: 综合上面所有功能,主要是对 bean 注册后的处理。
  1. 主角
    通过上图我们可以清楚地看到BeanFactory与之相关的各个类的依赖关系。那么今天的主角来了,它就是DefaultListableBeanFactory, 是Spring 注册及加载 bean 的默认实现;以及它的唯一子类XmlBeanFactory,是spring解析xml文件的核心部分。

总结

通过查阅源码本猿发现XmlBeanFactoryDefaultListableBeanFactory 类进行了扩展,主要用于从 XML 文档中读取 BeanDefinition, 对于注册及获取 bean都是使用从父类 DefaultListableBeanFactory 继承的方 法去实现,而唯独与父类不同的个性化实现就是增加了 XmlBeanDefinitionReader类型的 reader 属性。在 XmlBeanFactory 中主要使用 reader 属性对资源文件进行读取和注册。

后续

下一章节继续分析spring是如何加载xml文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值