• Spring——管理Bean的生命周期


    我们可以自定义bean的初始化和销毁方法,这里所指的的初始化和bean的构造不同,初始化是在bean构造完成后,对bean内部的属性或一些逻辑进行初始化。

    首先要弄清一些概念:

    1. 构造(对象创建)    
      1. 单实例:在容器启动时创建对象
      2. 多实例:在每次获取的时候创建对象
    2. 初始化:在对象创建后调用
    3. 销毁:
      1. 单实例:在容器关闭时执行销毁方法
      2. 多实例:容器不会管理,不会调用销毁方法

    下面提供几种方法供参考

    一、指定初始化和销毁方法

      在配置类中,我们可以通过@Bean指定initMethod 和destroyMethod ,分别指向类中的初始化和销毁方法。

    二、实现InitializingBean和DisposableBean

      实现接口中的InitializingBean(定义初始化逻辑)和destroy(定义销毁逻辑)方法即可。

    三、通过@PostConstruct和@PreDestroy注解

      在初始化和销毁方法上分别添加@PostConstruct和@PreDestroy注解,这样就能给Bean实现初始化和销毁。

    四、后置处理器及其原理

    后置处理器含义如下两个方法postProcessBeforeInitialization和postProcessAfterInitialization,分别会在初始化前和初始化后执行。

     

    实现逻辑

    BeanFactory在创建bean时,会先调用initializeBean方法进行初始化,并在初始化前获取到所有后置处理器,并执行后置处理器的postProcessBeforeInitialization方法。

    执行完所有后置处理器的postProcessBeforeInitialization方法后,接着BeanFactory将执行完初始化。

    初始化完成后,继续获取所有的后置处理器,循环执行所有的postProcessAfterInitialization方法。


     方法三的实现逻辑也是通过后置处理器来完成的。

    在执行postProcessBeforeInitialization时,会扫描标注有@PostConstruct注解的方法的类,最终定位到对应方法并执行。

  • 相关阅读:
    《跑跑跑》(五)——添加障碍物,Tiled障碍层的使用
    Cocos2d-JS 自定义loading界面
    Oracle本地,远程,分布式登录
    JUnit测试工具在项目中的用法
    js事件之神奇的onclick
    js常见事件
    JS & DOM 对象
    jquery方法的参数解读
    JDBC和DBUtils区别(查询时jdbc只能返回ResultSet需要po转vo,dbutils返回的BeanListHandler与BeanHandler对应集合与对象)
    AJAX技术的核心
  • 原文地址:https://www.cnblogs.com/Unicron/p/12341620.html
Copyright © 2020-2023  润新知