Bean的生命周期
正确理解spring容器中bean的生命周期很重要,有利于对bean的装配过程当中进行一些自定义内容。以下图所示的生命周期:
spring
如上图所见,在bean准备就绪以前,bean工厂执行了若干启动步骤,详细描述以下:post
- spring对bean实例化;
- spring将值和bean的引用注入到bean对应的属性中;
- 若是bean实现了BeanNameAware接口,spring将bean的id传递给setBeanName()方法,该方法的做用就是设置bean的id到BeanFactory中方便建立该bean,同时让bean知道本身在BeanFactory配置中的名字;
- 若是bean实现了BeanFactoryAware接口,spring将调用setBeanFactroy()方法,将BeanFactory容器实例传入,便于bean够获取配置他们的BeanFactory的引用;
- 若是bean实现了ApplicationContextAware接口,spring将调用setApplicationContext()方法,将bean所在应用上下文的引用传进来,便于bean获取它所在的Spring容器;
- 若是bean实现了BeanPostProcessor接口,spring将调用它的postProcessBeforeInitialization()方法,该方法在bean初始化以前调用;
- 若是bean实现了InitializingBean接口,spring将调用它的afterPropertiesSet()方法,当bean的所用属性被设置完成以后调用该方法;
- 若是bean实现了BeanPostProcessor接口,spring将调用它的postProcessAfterInitialization()方法,在bean初始化完成以后调用;
- 若是bean实现了DisposableBean接口,spring将调用它的destory()方法;