(1)容器寻找Bean的定义信息并且将其实例化。
(2)执行依赖注入,Spring按照Bean定义信息注入Bean的所有属性。
(3)如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法,并传递Bean的ID作为参数。
(4)如果Bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。
(5)如果BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialzation()方法将被调用。
(6)如果Bean实现了InitializingBean接口,afterPropertiesSet()方法会被调用;
如果Bean指定了init-method属性,init-method属性指定的方法将被调用。
如果InitializingBean和init-method属性同时出现,前者先于后者执行。
(7)如果有BeanPsotProcessor和Bean关联,那么它们的postProcessAfterInitialization()方法将被调用。
(8)最后当关闭应用时,Bean Factory会调用destroySingletons()方法,这时,会执行:
如果Bean实现了DisposableBean接口,destory()方法会被调用;
如果指定了destroy-method属性,destroy-method属性指定的方法将被调用。
如果DisposableBean和destroy-method属性同时出现,前者先于后者执行。
|