- Spring DI 教程
- Spring DI - 首頁
- Spring DI - 概述
- Spring DI - 環境設定
- Spring DI - IOC 容器
- Spring 依賴注入
- Spring DI - 建立專案
- 基於建構函式的注入示例
- Spring DI - 基於建構函式
- Spring DI - 內部 Bean 建構函式
- Spring DI - 集合建構函式
- Spring DI - 集合引用建構函式
- Spring DI - Map 建構函式
- Spring DI - Map 引用建構函式
- 基於 Setter 的注入示例
- Spring DI - 基於 Setter
- Spring DI - 內部 Bean Setter
- Spring DI - 集合 Setter
- Spring DI - 集合引用 Setter
- Spring DI - Map Setter
- Spring DI - Map 引用 Setter
- 自動裝配示例
- Spring DI - 自動裝配
- Spring DI - 按名稱自動裝配
- Spring DI - 按型別自動裝配
- Spring DI - 建構函式自動裝配
- 工廠方法
- Spring DI - 靜態工廠
- Spring DI - 非靜態工廠
- Spring DI 有用資源
- Spring DI - 快速指南
- Spring DI - 有用資源
- Spring DI - 討論
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!