概述
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方法
- 如果