Application Context 是 spring 中較高級(jí)的容器。和 BeanFactory 類似,它可以加載配置文件中定義的 bean,將所有的 bean 集中在一起,當(dāng)有請(qǐng)求的時(shí)候分配 bean。 另外,它增加了企業(yè)所需要的功能,比如,從屬性文件從解析文本信息和將事件傳遞給所指定的監(jiān)聽器。這個(gè)容器在 org.springframework.context.ApplicationContext interface 接口中定義。
ApplicationContext 包含 BeanFactory 所有的功能,一般情況下,相對(duì)于 BeanFactory,ApplicationContext 會(huì)被推薦使用。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)于 XmlWebApplicationContext。所以,接下來(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è)類文件。 |
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)用程序。如果程序沒有錯(cuò)誤,你將從控制臺(tái)看到以下信息:
Your Message : Hello World!