IoC容器实例化过程

 

两个主要容器

BeanFactory                   XmlBeanFactory                               

                                    FileSystemXmlApplicationContext

ApplicationContext           ClassPathXmlApplicationContext

                                    XmlWebApplicationContext

区别:

BeanFactory      延迟载入所有Bean,直到getBean()被调用才创建Bean

ApplicationContext 启动后加载所有Bean

 

Bean生命周期:BeanFactory容器

 

实例化

  设置属性

    调用BeanNameAwaresetBeanName()方法

       调用BeanFactoryAwaresetBeanFactory()方法

          调用ApplicationContextAwaresetApplicationContext()方法(如果容器为ApplicationContext)

          调用BeanPostProcessor的预初始化方法

             调用InitializingBeanafterPropertiesSet()方法

             调用定制的初始化方法(init-method参数配置的方法)

          调用BeanPostProcessor的后初始化方法

至此Bean可以被使用

 

调用DisposableBeandestroy()方法

调用定制的销毁方法(destroy-method参数配置的方法)

至此Bean被销毁

 

BeanFactoryPostProcessor例子

  1. PropertyPlaceholderConfigurer

    从多个外部属性文件中载入属性,并使用这些属性替换占位符变量

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="locations">

        <list>

 <value>WEB-INF/mail.properties</value>

 <value>WEB-INF/jdbc.properties</value>

        </list>

     </property>

</bean>

  1. CustomEditorConfigurer

    注册定制的java.bean.PropertyEditor实现,用它把装配的属性转化为其他类型,可使用String设置给一个非String属性

你可能感兴趣的:(IoC容器实例化过程)