Spring BeanFactory 容器



這是最簡單的容器,提供對 DI 的基本支援,並由 org.springframework.beans.factory.BeanFactory 介面定義。BeanFactory 和相關的介面,如 BeanFactoryAware、InitializingBean、DisposableBean,仍然存在於 Spring 中,目的是為了與大量與 Spring 整合的第三方框架保持向後相容性。

BeanFactory 介面有很多實現,這些實現都是 Spring 自帶的。最常用的 BeanFactory 實現是 **XmlBeanFactory** 類。此容器從 XML 檔案讀取配置元資料,並使用它來建立一個完全配置的系統或應用程式。

在資源有限的情況下,例如移動裝置或基於 applet 的應用程式,通常首選 BeanFactory。因此,除非你有充分的理由不這樣做,否則請使用 ApplicationContext。

示例

讓我們看一下現有的 Eclipse IDE,並按照以下步驟建立一個 Spring 應用程式:

步驟 描述
1 建立一個名為 *SpringExample* 的專案,並在建立的專案中的 **src** 資料夾下建立一個名為 com.tutorialspoint 的包。
2 使用“新增外部 JAR”選項新增所需的 Spring 庫,如 Spring Hello World 示例章節中所述。
3 在 *com.tutorialspoint* 包下建立 Java 類 *HelloWorld* 和 *MainApp*。
4 在 **src** 資料夾下建立 Bean 配置檔案 *Beans.xml*。
5 最後一步是建立所有 Java 檔案和 Bean 配置檔案的內容。最後,按照下面說明執行應用程式。

以下是 **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.beans.factory.InitializingBean; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.ClassPathResource;  

public class MainApp { 
   public static void main(String[] args) { 
      XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("Beans.xml")); 
      HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");    
      obj.getMessage();    
   }
}   

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

  • 第一步是建立一個工廠物件,我們使用框架 API XmlBeanFactory() 建立工廠 Bean,並使用 ClassPathResource() API 載入 CLASSPATH 中可用的 Bean 配置檔案。XmlBeanFactory() API 負責建立和初始化配置檔案中提到的所有物件,即 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!
spring_ioc_containers.htm
廣告