springboot原始碼解析-管中窺豹系列之bean如何生成?(十四)
阿新 • • 發佈:2021-03-26
# 一、前言
- Springboot原始碼解析是一件大工程,逐行逐句的去研究程式碼,會很枯燥,也不容易堅持下去。
- 我們不追求大而全,而是試著每次去研究一個小知識點,最終聚沙成塔,這就是我們的springboot原始碼管中窺豹系列。
![ 簡介 ](https://zhangbin1989.gitee.io/blog/picture/zb0018_springsour/springboot_source_0.png)
# 二、bean如何生成?
- 我們之前介紹了beanDefinition的結構: springboot原始碼解析-管中窺豹系列之BeanDefinition(八)
- 我們之前也介紹了BeanPostProcessor和BeanFactoryPostProcessor
- 我們也介紹了自動裝配,各種使用getBean的呼叫
- 有兩個核心問題:beanDefinition是什麼時候載入進springcontext容器的?又是如何生成bean的?
- 我們上一節解決了第一個問題:beanDefinition是什麼時候載入?
- 我們這一節解決第二個問題:如何生成bean?
# 三、原始碼分析
進入到main方法:
```
public static void main(String[] args) throws Exception {
SpringApplication.run(MyServerApplication.class, args);
}
```
從main方法進入到run方法:
```
public ConfigurableApplicationContext run(String... args) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
ConfigurableApplicationContext context = null;
Co