Spring源码学习笔记d01

Spring整体架构图
Spring内部原理示例(1):
public String MyTestBean{
private String testStr=“testStr”;
public String getTestStr(){
return testStr;
}
public void setTestStr(String testStr){
this.testStr=testStr;

}
}

@SupperWarnings(“deprecation”)
public class BeanFactoryTest{
@Test
public void testSimpleLoad(){
BeanFactory bt=new XmlBeanFactory(
new ClassPathResource(“beanFactoryTest.xml”));
MyTestBean bean=(MyTestBean)bf.getBean(“myTestBean”);
assertEquals(“testStr”,bean.getTestStr());

}
}
Spring的结构组成
1.DefaultListableBeanFactory
是整个bean加载的核心部分,是Spring注册及加载bean的默认实现;
该类继承了AbstractAutowireCapableBeanFactory,并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口。

(1)XmlBeanFactory
继承自DefaultListBeanFactory,类中使用了自定义的XML读取器XmlBeanDefinitionReader,实现了个性化的BeanDefinitionReader读取;
(2)AliasRegistry
定义对alias的简单增删改等操作。
(3)SimpleAliasRegistry
主要使用map作为alias的缓存,并对接口AliasRegistry进行实现。
(4)SingletonBeanRegistry
定义对单例的注册及获取。
(5)BeanFactory
定义获取bean及bean的各种属性。
(6)DefaultSingletonBeanRegistry
对接口SingletonBeanRegistry的各函数的实现。
(7)HierarchicalBeanFactory
继承BeanFactory,也就是在BeanFactory定义的功能的基础上增加了对parentFactory的支持。
(8)BeanDefinitionRegistry
定义对BeanDefinition的各种增删改操作。
(9)FactoryBeanRegistrySupport
在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理功能。
(10)ConfigurableBeanFactory
提供配置Factory的各种方法。
(11)ListableBeanFactory
根据各种条件获取bean的配置清单。
(12)AbsractBeanFactory
综合FactoryBeanRegistrySupport和ConfigurableBeanFactory
的功能。
(13)AutowireCapableBeanFactory
提供创建bean,自动注入,初始化以及应用bean的后处理器。
(14)AbstractAutowireCapableBeanFactory
综合AbstractBeanFactory并对AutowireCapableBeanFactory接口进行实现。
(15)ConfigrableListableBeanFactory
BeanFactory配置清单,指定忽略类型及接口等。
(16)DefaultListableBeanFactory
综合上边所有功能,主要是对Bean注册后的处理。
2.XmlBeanDefiitionReader
xml配置文件的读取是Spring中的重要功能,因为Spring的大部分功能都是以配置作为切入点的。
我们可以从XmlBeanDefinitionReader中梳理一下资源文件的读取、解析及注册的大致脉络。各个类的功能如下:
(1)ResourceLoader:
定义资源加载器,主要应用于根据给定的资源文件的地址返回对应的Resource。
(2)BeanDefinitionReader
主要定义资源文件读取,并转换为BeanDefinition的各个功能。
(3)EnvironmentCapable
定义获取Environment方法。
(4)DocumentLoader
定义从资源文件加载到转换为Document的功能。
(5)AbstractBeanDefinitionReader
对EnvironmentCapable、BeanDefinitionReader类定义的功能进行实现。
(6)BeanDefinitonDocumentReader
定义读取Document并注册BeanDefinition功能。
(7)BeanDefinitionParseDelegate
定义解析Element的各种方法。
3.XmlBeanDefinitionReader中主要包含以下几步中的处理:
(1)通过继承自AbstractBeanDefinitionReader中的方法,来使用ResourceLoader将资源文件路径转换为对应的Resource文件。
(2)通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件。
(3)通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值