Spring DI - ApplicationContext 容器



ApplicationContext 是 Spring 的高階容器。類似於 BeanFactory,它可以載入 Bean 定義,將 Bean 關聯在一起,並在請求時分配 Bean。此外,它還添加了更多企業特定的功能,例如能夠從屬性檔案解析文字訊息以及能夠將應用程式事件釋出到感興趣的事件偵聽器。此容器由 org.springframework.context.ApplicationContext 介面定義。

ApplicationContext 包含 BeanFactory 的所有功能,通常建議使用它而不是 BeanFactory。BeanFactory 仍然可以用於輕量級應用程式,例如移動裝置或基於 applet 的應用程式。

最常用的 ApplicationContext 實現有:

  • FileSystemXmlApplicationContext - 此容器從 XML 檔案載入 Bean 的定義。在這裡,您需要向建構函式提供 XML Bean 配置檔案的完整路徑。

  • ClassPathXmlApplicationContext - 此容器從 XML 檔案載入 Bean 的定義。在這裡,您不需要提供 XML 檔案的完整路徑,但需要正確設定 CLASSPATH,因為此容器將在 CLASSPATH 中查詢 Bean 配置 XML 檔案。

  • WebXmlApplicationContext - 此容器從 Web 應用程式載入包含所有 Bean 定義的 XML 檔案。

示例

讓我們更新在 Spring DI - 建立專案 章節中建立的專案。我們將新增以下檔案:

  • HelloWorld.java - 一個依賴類。

  • MainApp.java - 執行和測試的主要應用程式。

以下是 HelloWorld.java 檔案的內容:

package com.tutorialspoint;
public class HelloWorld {
   private String message;
   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

以下是第二個檔案 MainApp.java 的內容:

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new FileSystemXmlApplicationContext
         ("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml");
      
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
   }
}

關於主程式,應注意以下兩點:

  • 第一步是建立工廠物件,我們使用框架 API FileSystemXmlApplicationContext 在載入給定路徑的 Bean 配置檔案後建立工廠 Bean。FileSystemXmlApplicationContext() API 負責建立和初始化 XML Bean 配置檔案中提到的所有物件,即 Bean。

  • 第二步是使用建立的上下文物件的 getBean() 方法獲取所需的 Bean。此方法使用 Bean ID 返回一個泛型物件,最終可以將其轉換為實際物件。獲得物件後,您可以使用此物件呼叫任何類方法。

以下是 Bean 配置檔案 Beans.xml 的內容

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld">
      <property name = "message" value = "Hello World!"/>
   </bean>
</beans>

輸出

完成建立原始檔和 Bean 配置檔案後,讓我們執行應用程式。如果應用程式一切正常,它將列印以下訊息:

Your Message : Hello World!
廣告

© . All rights reserved.