Spring ApplicationContext 容器

2022-11-30 13:39 更新

Application Context 是 BeanFactory 的子接口,也被稱為 Spring 上下文。

Application Context 是 spring 中較高級的容器。和 BeanFactory 類似,它可以加載配置文件中定義的 bean,將所有的 bean 集中在一起,當(dāng)有請求的時候分配 bean。 另外,它增加了企業(yè)所需要的功能,比如,從屬性文件中解析文本信息和將事件傳遞給所指定的監(jiān)聽器。這個容器在 org.springframework.context.ApplicationContext interface 接口中定義。

ApplicationContext 包含 BeanFactory 所有的功能,一般情況下,相對于 BeanFactory,ApplicationContext 會更加優(yōu)秀。當(dāng)然,BeanFactory 仍可以在輕量級應(yīng)用中使用,比如移動設(shè)備或者基于 applet 的應(yīng)用程序。

最常被使用的 ApplicationContext 接口實現(xiàn):

  • FileSystemXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這里,你需要提供給構(gòu)造器 XML 文件的完整路徑。

  • ClassPathXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這里,你不需要提供 XML 文件的完整路徑,只需正確配置 CLASSPATH 環(huán)境變量即可,因為,容器會從 CLASSPATH 中搜索 bean 配置文件。

  • XmlWebApplicationContext:該容器會在一個 web 應(yīng)用程序的范圍內(nèi)加載在 XML 文件中已被定義的 bean。

我們已經(jīng)在 Spring Hello World Example章節(jié)中看到過 ClassPathXmlApplicationContext 容器,并且,在基于 spring 的 web 應(yīng)用程序這個獨立的章節(jié)中,我們討論了很多關(guān)于 WebXmlApplicationContext。所以,接下來,讓我們看一個關(guān)于 FileSystemXmlApplicationContext 的例子。

例子:

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

步驟 描述
1 創(chuàng)建一個名為 SpringExample 的工程, 在 src 下新建一個名為 com.tutorialspoint 的文件夾src
2 點擊右鍵,選擇 Add External JARs 選項,導(dǎo)入 Spring 的庫文件,正如我們在 Spring Hello World Example 章節(jié)中提到的導(dǎo)入方式。
3 在 com.tutorialspoint 文件夾下創(chuàng)建 HelloWorld.java 和 MainApp.java 兩個類文件。
4 文件夾下創(chuàng)建 Bean 的配置文件 Beans.xml。
5 最后的步驟是編輯所有 JAVA 文件的內(nèi)容和 Bean 的配置文件,按照以前我們講的那樣去運(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.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();
   }
}

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

  • 第一步生成工廠對象。加載完指定路徑下 bean 配置文件后,利用框架提供的 FileSystemXmlApplicationContext API 去生成工廠 bean。FileSystemXmlApplicationContext 負(fù)責(zé)生成和初始化所有的對象,比如,所有在 XML 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)容,接下來,讓我們運(yùn)行這個應(yīng)用程序。如果程序沒有錯誤,你將從控制臺看到以下信息:

Your Message : Hello World!


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號