Spring BeanFactory 容器

2022-05-21 15:18 更新

這是一個最簡單的容器,它主要的功能是為依賴注入 (DI) 提供支持,這個容器接口在 org.springframework.beans.factory.BeanFactory中被定義。BeanFactory 和相關(guān)的接口,比如BeanFactoryAware、DisposableBean、InitializingBean,仍舊保留在 Spring 中,主要目的是向后兼容已經(jīng)存在的和那些 Spring 整合在一起的第三方框架。

在 Spring 中,有大量對 BeanFactory 接口的實現(xiàn)。其中,最常被使用的是 XmlBeanFactory 類。這個容器從一個 XML 文件中讀取配置元數(shù)據(jù),由這些元數(shù)據(jù)來生成一個被配置化的系統(tǒng)或者應用。

在資源寶貴的移動設備或者基于 applet 的應用當中, BeanFactory 會被優(yōu)先選擇。否則,一般使用的是 ApplicationContext,除非你有更好的理由選擇 BeanFactory。

例子:

假設我們已經(jīng)安裝 Eclipse IDE,按照下面的步驟,我們可以創(chuàng)建一個 Spring 應用程序。

步驟 描述
1 創(chuàng)建一個名為 SpringExample 的工程并在 src 文件夾下新建一個名為 com.tutorialspoint 文件夾。
2 點擊右鍵,選擇 Add External JARs 選項,導入 Spring 的庫文件,正如我們在 Spring Hello World Example 章節(jié)中提到的導入方式。
3 com.tutorialspoint 文件夾下創(chuàng)建 HelloWorld.javaMainApp.java 兩個類文件。
4 src 文件夾下創(chuàng)建 Bean 的配置文件 Beans.xml
5 最后的步驟是創(chuàng)建所有 Java 文件和 Bean 的配置文件的內(nèi)容,按照如下所示步驟運行應用程序。

下面是文件 HelloWorld.java 的內(nèi)容:

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 的內(nèi)容:

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();
   }
}

在主程序當中,我們需要注意以下兩點:

  • 第一步利用框架提供的 XmlBeanFactory() API 去生成工廠 bean 以及利用 ClassPathResource() API 去加載在路徑 CLASSPATH 下可用的 bean 配置文件。XmlBeanFactory() API 負責創(chuàng)建并初始化所有的對象,即在配置文件中提到的 bean。

  • 第二步利用第一步生成的 bean 工廠對象的 getBean() 方法得到所需要的 bean。 這個方法通過配置文件中的 bean ID 來返回一個真正的對象,該對象最后可以用于實際的對象。一旦得到這個對象,你就可以利用這個對象來調(diào)用任何方法。

下面是配置文件 Beans.xml 中的內(nèi)容:

<?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>

如果你已經(jīng)完成上面的內(nèi)容,接下來,讓我們運行這個應用程序。如果程序沒有錯誤,你將從控制臺看到以下信息:

Your Message : Hello World!
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號