Spring ApplicationContext 容器

2022-11-30 13:39 更新

Application Context 是 BeanFactory 的子接口,也被稱(chēng)為 Spring 上下文。

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

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

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

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

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

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

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

例子:

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

步驟 描述
1 創(chuàng)建一個(gè)名為 SpringExample 的工程, 在 src 下新建一個(gè)名為 com.tutorialspoint 的文件夾src
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.java 和 MainApp.java 兩個(gè)類(lèi)文件。
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)中,我們需要注意以下兩點(diǎn):

  • 第一步生成工廠對(duì)象。加載完指定路徑下 bean 配置文件后,利用框架提供的 FileSystemXmlApplicationContext API 去生成工廠 bean。FileSystemXmlApplicationContext 負(fù)責(zé)生成和初始化所有的對(duì)象,比如,所有在 XML bean 配置文件中的 bean。

  • 第二步利用第一步生成的上下文中的 getBean() 方法得到所需要的 bean。 這個(gè)方法通過(guò)配置文件中的 bean ID 來(lái)返回一個(gè)真正的對(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)