读书人

Spring的初始化进程

发布时间: 2012-06-27 14:20:08 作者: rapoo

Spring的初始化过程

Spring 的几个接口

1.InitializingBean接口,在初始化Bean时容器会调用前者的????<bean id="javaBean" class="com.test.JavaBean" init-method="init"> ????????<property name="name" value="zhjb"></property>

  • ????</bean> ????<bean id="user" class="com.test.User" init-method="init">
  • ????????<property name="name" value="zhjb" ></property> ????</bean>
  • </beans>

    运行结果如下:

    加载Spring配置文件
    JavaBean类构造方法
    JavaBean类setName 方法
    BeanFactoryAware 接口 setBeanFactory方法
    InitializingBean 接口 afterPropertiesSet方法
    JavaBean类init 方法
    BeanFactoryPostProcessor 接口 postProcessBeanFactory 方法
    User类构造方法
    User类 setName方法
    user:BeanPostProcessor 接口 postProcessBeforeInitialization 方法
    User类init 方法
    user:BeanPostProcessor 接口 postProcessAfterInitialization方法
    加载Spring配置文件结束
    获取name属性:zhjb
    程序结束

    ?

    从结果进行分析,Bean的初始化顺序应该是

    1.构造函数

    2.初始化属性

    3.如果实现了BeanFactoryAware 接口执行setBeanFactory方法

    4..如果实现了InitializingBean 接口执行afterPropertiesSet方法

    5.如果在配置文件中指定了init-method,那么执行该方法

    6..如果实现了BeanFactoryPostProcessor 接口在 “new”其他类之前执行 postProcessBeanFactory 方法(通过这个方法可以改变配置文件里面的属性值的配置)

    7.如果实现了BeanFactoryPostProcessor 接口,那么会在其他bean初始化方法之前执行postProcessBeforeInitialization 方法,之后执行postProcessAfterInitialization方法

    感觉奇怪的地方就是没有执行destroy方法,目前还不知道原因在什么地方

  • 读书人网 >Web前端

    热点推荐