zoukankan      html  css  js  c++  java
  • Spring------生命周期

    Spring------生命周期

    如图所示:

    一下就是对上图的解释:

    Spring生命周期

       1.先实例化Bean工厂后处理器(Bean工厂处理器的实例化是先于bean的实例化的)

    BeanFactoryPostProcessor)

    该接口只有一个postProcessBeanFactory方法,将加载所有bean定义,但是还没有实例化bean。

       2.实例化Bean后处理器BeanPostProcessor)

    主要是两个能力:

    (1)检验bean状态是否有效;

    (2)判断bean是什么接口,然后进行set属性。应该就是api里面说的检查标记接口;

    此时,ApplicationContext 可以在它们的beans definitions自动检测BeanPostProcessor bean并且把这些bean应用于随后的bean创建。

      

    3.实例化感知的bean后处理器适配器(InstantiationAwareBeanPostProcessorAdapter)

    它可以去调用三个方法:

    postProcessBeforeInstantiation方法(实例化Bean之前调用)这个返回的bean也许是一个代理代替目标bean,有效地抑制目标bean的默认实例化。

    postProcessAfterInitialization方法(实例化Bean之后调用)主要是对已经实例化的bean进行一些处理,比如说:可能这个bean在早期已经实例化了又是单例,那么就销毁这个bean用原来的bean。

    postProcessPropertyValues方法(设置某个属性时调用)这个方法是校验需要注入的属性是否有属性值,并为bean注入属性

    4执行Bean构造器,bean正式实例化

    在实例化之前会先去调用postProcessBeforeInstantiation方法

    在实例化之后就去调用postProcessAfterInitialization方法

    在这里实例化就是调用postProcessPropertyValues去为所要实例化的bean注入属性

    注:此处使用到的是Bean后处理器适配器的方法。

    5. 调用BeanNameAware接口

    通过其中的setBeanName(String name)方法对工厂bean进行set name

    6. 调用BeanFactoryAware接口

    通过其中的setBeanFactory(BeanFactory beanFactory)方法对工厂bean进行set name

    它会为bean实例提供所属工厂的回调。但是,是在普通的bean属性值填充之后,在初始化回调之前,从而获得所属的beanFactory并拷贝到本对象中。

    作用:可以通过这个bean所属的beanFactory检查bean依赖的bean、beanClassLoader、互斥的单例等。

    7.调用Bean后处理器的postProcessBeforeInstantiation方法对属性进行更改

    8.调用InitializingBean.afterPropertiesSet() ,检查是否已经set所有必要属性,

    之后调用<bean>的init-method属性指定的初始化方法

    9. 调用Bean后处理器的postProcessAfterInitialization对属性进行更改

    注:7、9用到的是Bean后处理器的方法。

    后处理器适配器与后处理器的这两个方法分不同之处在于:

    前者实在目标bean初始化之前之后调用,而后者实在任何bean实例化回掉之前之后使用

    所以后处理器适配器的方法是先与后处理器的方法被调用

    10.调用后处理器适配器的postProcessAfterInitialization

    11. 容器初始化成功,使用bean

    12. 调用DiposibleBean接口的DiposibleBean.destory()

    被一个BeanFactory调用销毁一个实例对象

    destroy-method调用<bean>的destroy-method属性指定的销毁方法

  • 相关阅读:
    Optimal Milking
    Alice's Chance
    The Perfect Stall
    项目范围管理
    计算机网络总结 第六章 网络层
    计算机网络总结 第一章 计算机网络概论
    Http与url
    javaScript期末复习基础
    计算机网络各层涉及协议
    javaScript_canvas 面向对象实现
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/10692870.html
Copyright © 2011-2022 走看看