概述
-
启动,扫描指定的包路径,查找需要被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
- 如果