好記性不如爛筆頭86-spring3學習(7)-ApplicationContext中bean的生命週期

來源:互聯網
上載者:User

標籤:beanfactory   applicationcontext   bean   spring   好記性不如爛筆頭   

如果使用ApplicationContext來產生、管理Bean, 一個Bean從建立到銷毀,會曆經幾個執行階段。
我個人理解一般的bean的生命週期主要包括:建立,初始化,使用階段,銷毀四個核心階段。使用ApplicationContext 和BeanFactory對bean的生命週期來看,宏觀上基本相同,微觀上有一些差異。

如果使用ApplicationContext來產生並管理Bean,在執行BeanfactoryAware的
setBeanFactory()階段之後,若Bean類上有實現org.springframework.context.ApplicationContextAware介面,則執行setApplicationContext()方法,接著才繼續進行BeanPostProcessors的processBeforeInitialization()及之後的流程。

在非WEB應用程式中,若想在關閉容器之前調用Bean定義檔案中Singleton的Bean所設定的destroy方法,則可以執行AbstractApplicationContext的registerShutdownHook()方法,並向JVM註冊相關方法,例如:
AbstractApplicationContext context = new ClassPathXmlApplicationContext
(“beans-config.xml”);
context.registerShutdownHook();
//執行應用程式

在應用程式結束之前,Bean定義檔案上所設定的destroy方法將會被調用執行。
如果使用BeanFactory,只有在使用getBean()方法真正取得Bean時,才會做執行個體化的動作
如果使用ApplicationContext,則會預先針對Bean定義檔案的內容,將所有的Bean執行個體化。如果這不是你想要的,可以在上設定”lazy-init”屬性為”true,ApplicationContext 就不會在啟動的時候針對該Bean作執行個體化的動作,例如:

<bean id="some" class="org.bearfly.bean.Some lazy-init="true"></bean>

好記性不如爛筆頭86-spring3學習(7)-ApplicationContext中bean的生命週期

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.