-
无参构造方法new对象
-
依赖注入 @Autowired (三级缓存)
-
初始化前 @PostConstruct
-
初始化 实现InitializingBean的afterPropertiesSet方法,可以做一些验证,或者属性的注入
-
初始化后Aop,(前置后置处理器)
-
单例池SingteObjectMap
-
Bean对象 getBean() 获取
声明周期简答
- 扫描并解析类得到BeanDfinition
- 推断构造方法,并实例化一个对象
- 进行属性填充,比如加了@autowired注解的属性
- 回调Aware方法,比如BeanNameAware,BeanFactoryAware
- 回调BeanPostProcessor的初始化前的方法
- 调用初始化方法。比如执行静态方法,@PostConstruct方法
- 调用BeanPostProcessor的初始化后的方法,Aop的切入点
- 对于单利bean则放入单利池
- getBean等使用bean
- DisposableBean中的destory方法在容器关闭是销毁bean
spring spi自动配置注解
@SpringBootApplication
@EnableAutoConfiguration
@Import(AutoConfigurationImportSelector.class)
getAutoConfigurationEntry方法执行spi扫表到全限定名String[]
Q.E.D.