Spring-IOC学习:BeanFactory(一)

 

spring的核心内容便是IOC(Inversion Of Control, 不过有人觉得叫Dependency Injection 更贴切)

 

 



 

:

 

BeanFactory: spring Bean 容器最顶层的接口,主要定义了基本的Bean获取操作。其子类必须尽可能的支持SpringBean对象的生命周期,它的顺序如下(只是先后顺序,可以跳过):


1. BeanNameAware's setBeanName
2. BeanClassLoaderAware's setBeanClassLoader
3. BeanFactoryAware's setBeanFactory
4. ResourceLoaderAware's setResourceLoader (only applicable when running in an application context:这句话的意思是只有ApplicationContext的子类才有意义)
5. ApplicationEventPublisherAware's setApplicationEventPublisher (only applicable when running in an application context)
6. MessageSourceAware's setMessageSource (only applicable when running in an application context)
7. ApplicationContextAware's setApplicationContext (only applicable when running in an application context)
8. ServletContextAware's setServletContext (only applicable when running in a web application context)
9. postProcessBeforeInitialization methods of BeanPostProcessors
10. InitializingBean's afterPropertiesSet
11. a custom init-method definition
12. postProcessAfterInitialization methods of BeanPostProcessors

On shutdown of a bean factory, the following lifecycle methods apply:
1. DisposableBean's destroy
2. a custom destroy-method definition

 

HierarchicalBeanFactory:相比BeanFactory 其多了父子层级关系。

 

ListableBeanFactory:顾名思义,此BeanFactory是可以把容器中的bean循环枚举出来,而不是按照名字一个一个去取。

AutowireCapableBeanFactory:自动注入的BeanFactory,官方API中说明ApplicationContext并没有实现此接口(可以通过@link org.springframework.context.ApplicationContext#getAutowireCapableBeanFactory()获取)

ConfigurableBeanFactory:这是BeanFactory的扩展接口,只是为了内部方便使用以及获取BeanFacotry的配置信息(建议还是用BeanFacoty或者ListableBeanFactory)

 

BeanDefinitionRegistry:在spring中BeanFactory想要初始化一个Bean是根据BeanDefinition来操作的,所以这个类主要定义了通过BeanDefinition注册Bean、获取Bean、销毁Bean

 

XmlBeanFactory:这个类定义了spring bean配置文件的格式是xml的,他主要是通过xmlReader去构造Bean。

 

XmlBeanFactory大致初始化顺序:

 

得到XML文件的Resource(统一资源处理接口) --> 解析XML文件(如果有import直接递归解析) --> 解析成BeanDefinition并注册到Container中(从图中可以看到, XmlReader中聚合了一个BeanDefinitionRegister,所以解析后的beanDefinition直接注册到BeanFactory中

初始化结束,也就是说,这个XmlBeanFactory只干了一个读取xml并将xml的内容转换成BeanDefinition,注册到容器里面。这个时候,Spring的Bean还没有初始化。

 

当调用getBean系列方法时,Bean开始初始化,进入Bean初始化流程。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值