zoukankan      html  css  js  c++  java
  • spring_04bean的生命周期

    一.前言 

      spring框架中的bean对象生命周期是面试时常考的问题

      往往笔试,面试总喜欢问生命周期的问题

    二.spring_bean应用上下文生命周期图:

      

    三.生命周期流程(bean应用上下文): 

    1. 实例化(当我们的程序加载beans.xml文件),把我们的bean(当前情况:scope=singleton)实例化到内存

    2. 调用set方法设置属性

    3. 如果你实现了bean名字关注接口(BeanNameAware)则,可以通过方法setBeanName获取id号

    4. 如果你实现了 bean工厂关注接口,(BeanFactoryAware),则可以获取工厂BeanFactory

    5. 如果你实现了 ApplicationContextAware接口,则调用方法 该方法传递ApplicationContext容器

    6. 如果bean 和 一个后置处理器(实现BeanPostProcessor接口的类)关联,则会自动去调用 postProcessBeforeInitialization方法,注意:不用使用该bean实现接口,另外建类实现接口

          <!-- 配置实现接口BeanPostProcessor的类:MyBeanPostProcessor,即后置处理器,有点类似filter -->
          <bean id="myBeanPostProcessor" class="com.ahd.serviceImpl.MyBeanPostProcessor">
          </bean>
    7. 如果你实现InitializingBean 接口,则会调用 afterPropertiesSet,该接口的实现类作用是初始化bean对象,默认初始化bean对象的方法是afterPropertiesSet,如果想自定义方法,可以在spring配置文件中的bean配置中,添加init-method属性来指定使用什么方法来初始化bean对象,系统默认先执行默认方法afterPropertiesSet,在执行自定义方法

      <bean id="validateUser" init-method="myInit" class="com.ahd.serviceImpl.CheckUser1">
              <property name="username">
                  <value>爱华顿g</value>
              </property>
              <property name="password" value="123456"></property>
          </bean>
    8. 如果bean 和 一个后置处理器关联,则会自动去调用 postProcessAfterInitialization方法

    9. 使用我们的bean

    10. 容器关闭

    11. 可以通过实现DisposableBean 接口来调用方法 destory

    12. 可以在<bean destory-method=”fun1”/> 调用定制的销毁方法

      <bean id="validateUser" destroy-method="mydestory" class="com.ahd.serviceImpl.CheckUser1">
              <property name="username">
                  <value>爱华顿g</value>
              </property>
              <property name="password" value="123456"></property>
          </bean>

    四.测试运行结果 

      

    五.总结 

      小结: 我们实际开发中往往,没有用的这么的过程,常见的是:

      1->2->6->10->9->11 

      如果是使用bean工厂,生命周期比使用应用上下文要略短,没有5,6,8部   

      问题:通过BeanFactory来获取bean对象,bean的生命周期是否和Applicationcontext 是一样吗?

      不是一样的,bean是工厂中创建的生命周期会简单一些:

  • 相关阅读:
    Volley的post使用
    android中asynctask的使用实例
    android中HttpClient的应用(POST方法)
    gson在android中的应用
    7、Web应用程序中的安全向量 -- 使用Retail部署配置
    6、Web应用程序中的安全向量 -- customErrors(适当的错误报告和堆栈跟踪)
    5、Web应用程序中的安全向量 -- Open Redirect Attack(开放重定向)
    4、Web应用程序中的安全向量 -- over-posting(重复提交)
    3、Web应用程序中的安全向量 -- cookie盗窃
    2、Web应用程序中的安全向量 -- CSRF/XSRF(跨站请求伪造)
  • 原文地址:https://www.cnblogs.com/aihuadung/p/10357848.html
Copyright © 2011-2022 走看看