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 配置文件。
我們已經(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。
下面是配置文件 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!
更多建議: