概述
-
啟動,掃描指定的包路徑,查找需要被Spring
管理的Spring
bean
- 構造
對象BeanDefinition
- 執行個體化
,如果有多個構造方法,則需要推斷構造方法,确定好構造方法後,進行執行個體化得到一個對象bean
- 進行
的屬性注入bean
- 如果
實作了bean
接口,BeanNameAware
将會Spring
的bean
傳遞給id
方法setBeanName()
- 如果
實作了bean
接口,BeanFactoryAware
将會調用Spring
方法,将setBeanFactory()
容器執行個體傳入BeanFactory
- 如果
實作了bean
接口,ApplicationContextAware
将調用Spring
方法,将setApplicationContext()
所在的應用上下文引用傳入進來bean
- 如果
實作了bean
接口,BeanPostProcessor
将調用Spring
方法postProcessBeforeInitialization()
- 執行
的初始化構造器方法bean
- 如果
的方法中有bean
注解标注的方法,@PostConstruct
将執行這些方法Spring
- 如果
實作了bean
接口,InitializingBean
将調用Spring
方法afterPropertiesSet()
- 如果
使用bean
聲明了初始化方法,init-method
将調用這個方法Spring
- 如果
- 如果
實作了bean
接口,BeanPostProcessor
會調用Spring
方法postProcessAfterInitialization()
- 至此,
已經準備就緒,将會放入容器中bean
-
容器關閉時,執行銷毀方法Spring
- 如果
的方法中有bean
注解标注的方法,則執行這些方法@PreDestroy
- 如果
實作了bean
中的DisposableBean
方法, 則調用destory()
方法destory
- 如果