Spring之Bean在BeanFactory的生命周期

来源:互联网 发布:西游记 女儿情 知乎 编辑:程序博客网 时间:2024/05/16 13:47

Bean在BeanFactory中的生命周期如图所示:

这里写图片描述

关于Bean的生命周期中几个接口:

bean中关于生命周期的接口可以分为两类,一类是容器级的生命周期接口,用于对bean的共性的设置。一类是bean级的生命周期接口,用于bean的个性的设置。其中,容器及的生命周期接口包括:InstantiationAwareBeanPostProcessor、BeanPostProcessor。Bean级生命周期接口包括:BeanNameAware、BeanFactoryAware、InitializingBean。

容器级生命周期接口:

  • InstantiationAwareBeanPostProcessor

    它包含三个方法。
    1)postProcessBeforeInstantiation():用于在实例化bean之前调用的方法。
    2)postProcessAfterInstantiation():对应于第一个方法,用在实例化bean之后调用的方法。
    3)postProcessPropertyValues():在调用bean的set方法设置属性之前设置的方法,可以用来初始的bean的共性属性。

  • BeanPostProcessor
    它包含两个方法。
    1)postProcessBeforeInitialization():在bean初始化之前执行的方法。
    2)postProcessAfterInitialization():在bean初始化之后的执行方法,与第一个方法想对应。

Bean级生命周期接口:

  • BeanNameAware:
    setBeanName()方法用于设置bean的名称。
  • BeanFactoryAware:
    setBeanFactory()方法用于设置bean所属的beanFactory。
  • IntializingBean:
    afterPropertiesSet()方法:在bean设置完属性后,可以对其属性进行再次的更改。

总结

在BeanFactory中bean的生命周期开始于getBean方法,其中关于生命周期的接口是可选的,如果你都不实现上述的接口,那么bean生命周期最简洁的方式就是:1、调用getBean方法,开始生命周期。2、利用java发射机制调用bean的无参构造函数实例化bean。3、设置bean的名称。4设置bean所属的BeanFactory。5、如果有init-method方法,则调用。没有则不调用。6、根据bean是否是单例:若是单例则生命周期交给BeanFactory管理,若不是单例模式,则交给bean的调用者管理。

0 0