1. 程式人生 > >Spring Bean的初始化和例項化的區別

Spring Bean的初始化和例項化的區別

準確的說,標題中的初始化指的是Bean Definition的初始化,所以是完全不同的兩個概念。

 

普通的Java類如果想被SpringIOC容器託管,擁有強大的擴充套件功能和更強大的生命週期,使用者(程式設計師)要做的只是寫配置或者寫註解,然後Spring會做這些事:

首先,從xml或者註解掃描後的metadata中讀取並載入Java類的原始資料到記憶體,通常是class二進位制檔案內容。

其次,將上一步讀取的內容,轉化為Bean Definition儲存到DefaultListableBeanFactory的屬性中,內部使用asm的API操作具體的位元組碼資料內容。

最後,需要例項化Bean的時候,使用反射呼叫建構函式例項化class,在記憶體中生成物件,接著給這個物件設定屬性,自動裝配依賴。