Spring – 03 application context

上一個單元,我們提到Spring的一個核心功能–IoC container,具體一點來說,Spring採用底下兩種實現方式:

  • Bean factory — 提供最基本的dependency injection功能,不過如果我們希望更全面享用 Spring framework所提供的各項支援,bean factories顯然不夠給力
  • Application context — 除了涵蓋bean factory的基本功能,更提供包括檔案資源存取、發送與接聽應用程式事件、多國語系…等進階特性,所以在實際運用上我們通常採用Application context

我們先看一下Spring container在啟動時的作業流程:

screen-shot-2016-10-13-at-9-33-07-pm

Jave Reflection api  允許程式在執行時期(runtime)能「動態」地建立物件、改變物件屬性、行為

從上圖可以看出,Spring container在啟動時,會讀取bean的定義檔,然後透過Java Reflection api來建立bean實體,並且注入所依賴的bean。而bean的定義方式有xml、java annotation兩類型式,所以Application context 也大致區分為這兩類:

  • Xml
    • ClassPathXmlApplicationContext — 從classpath 讀取xml定義檔
    • FileSystemXmlApplicationContext — 從檔案系統讀取xml定義檔
  • Annotation
    • AnnotationConfigApplicationContext — 讀取java class 裡所標注的 annotation

建立ApplicationContext之後,我們就可以使用getBean(Class beanType)或是getBean(String beanName)方法來取得Spring container 裡面某個bean,個人推薦使用getBean(Class beanType)這種寫法,為什麼呢?這邊賣個關子,答案就請大家在底下Api doc 裡面找找囉~~

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html

Facebook Comments