Spring何時實例化bean,首先要分2種狀況
第一:若是你使用BeanFactory做爲Spring Bean的工廠類,則全部的bean都是在第一次使用該Bean的時候實例化
第二:若是你使用ApplicationContext做爲Spring Bean的工廠類,則又分爲如下幾種狀況:
(1):若是bean的scope是singleton的,而且lazy-init爲false(默認是false,因此能夠不用設置),則 ApplicationContext啓動的時候就實例化該Bean,而且將實例化的Bean放在一個map結構的緩存中,下次再使用該Bean的時候, 直接從這個緩存中取
(2):若是bean的scope是singleton的,而且lazy-init爲true,則該Bean的實例化是在第一次使用該Bean的時候進行實例化
(3):若是bean的scope是prototype的,則該Bean的實例化是在第一次使用該Bean的時候進行實例化緩存