zoukankan      html  css  js  c++  java
  • Spring的Bean生命周期理解

      首先,在经历过很多次的面试之后,一直不能很好的叙述关于springbean的生命周期这个概念。今日对于springBean的生命周期进行一个总结。

    一、springBean的生命周期:

      如下图所示:

    通过这张图能大致看懂spring的生命周期,详解:

    1. instantiate bean对象实例化
    2. populate properties 封装属性
    3. 如果Bean实现BeanNameAware执行setBeanName
    4. 如果Bean实现BeanFactoryAwarApplicationContextAwar设置工厂setBeanFactory或上下文对象setApplicationContext
    5. 如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization
    6. 如果Bean实现InitializingBean执行afterPropertiesSet
    7. 调用自定义的init-method方法
    8. 如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
    9. 执行业务处理
    10. 如果Bean实现DisposableBean执行destroy
    11. 调用自定义的destroy-method

      第一步就是对实例化bean,调用构造函数来创建实例,第二步是根据配置,进行相应属性的设置,依赖注入就是在这一步完成的。

      第三步和第四步是让spring去了解咱们的spring容器,第五步和第八步可以针对指定的Bean进行功能增强,这时一般是采用的动态代理,(两种动态代理方式:jdk动态代理和cglib动态代理)。第六步和第十步是通过实现指定的接口来完成init(初始化)和destory(销毁)操作。但是我们在通常情况下不会使用这两步,因为我们可以通过第七步和第十一步,在配置文件中设置相应的初始化和销毁方法。

      比如:

      总结:

        对于springbean的生命周期,我们需要关注的主要有两个方法:

          1.增强bean的功能可以使用后处理Bean,BeanPostProcessor

          2.如果需要初始化或销毁操作,我们可以使用init-method方法和destory-method方法。

      同时还需要注意一点:destory-method方法是只针对于scope=singleton的时候才有效果!

  • 相关阅读:
    ssh框架整合之登录以及增删改查
    jsp+servlet实现模糊查询和分页效果
    面向对象高级部分
    个人第二次作业:熟悉使用工具
    个人第1次作业:准备与阅读
    如何计算团队成员贡献分
    Jira软件使用体验报告
    软件测试第四组第一周作业第三天
    软件测试第四组第一周作业第二天
    软件测试第四组第一周作业第一天
  • 原文地址:https://www.cnblogs.com/wgl-gdyuan/p/9911653.html
Copyright © 2011-2022 走看看