Spring BeanFactory 容器

2022-05-21 15:18 更新

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

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

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

例子:

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

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

下面是文件 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();
   }
}

在主程序當(dāng)中,我們需要注意以下兩點(diǎn):

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

  • 第二步利用第一步生成的 bean 工廠對(duì)象的 getBean() 方法得到所需要的 bean。 這個(gè)方法通過(guò)配置文件中的 bean ID 來(lái)返回一個(gè)真正的對(duì)象,該對(duì)象最后可以用于實(shí)際的對(duì)象。一旦得到這個(gè)對(duì)象,你就可以利用這個(gè)對(duì)象來(lái)調(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)容,接下來(lái),讓我們運(yùn)行這個(gè)應(yīng)用程序。如果程序沒(méi)有錯(cuò)誤,你將從控制臺(tái)看到以下信息:

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)