Spring ApplicationContext容器
應用程序上下文(Application Context)是Spring更先進的容器。以它的BeanFactory類似可以加載bean定義,並根據要求分配bean。此外,它增加了更多的企業特定的功能,例如從一個屬性文件解析文本消息的能力,並發布應用程序事件感興趣的事件監聽器的能力。此容器是由org.springframework.context.ApplicationContext 接口定義。
ApplicationContext 包括了 BeanFactory 所有的功能,因此通常建議在 BeanFactory。 BeanFactory中仍然可以用於重量輕的應用,如移動裝置或基於小應用程序的應用程序。
最常用的 ApplicationContext 實現是:
-
FileSystemXmlApplicationContext: 這個容器加載從一個XML文件中的bean的定義。在這裡,你需要提供給構造函數中的XML bean配置文件的完整路徑。
-
ClassPathXmlApplicationContext 這個容器加載從一個XML文件中的bean的定義。在這裡,您不需要提供XML文件的完整路徑,但你需要正確設置CLASSPATH,因為這個容器會看在CLASSPATH中bean的XML配置文件.
-
WebXmlApplicationContext: 此容器加載所有的bean從Web應用程序中定義的XML文件。
我們已經看到在Spring 的Hello World示例ClassPathXmlApplicationContext容器的例子,我們將更多地談論XmlWebApplicationContext 在一個單獨的章節時,我們將討論基於Web的Spring應用程序。所以,讓我們看到FileSystemXmlApplicationContext一個例子。
例子:
我們使用Eclipse IDE,然後按照下麵的步驟來創建一個 Spring 應用程序:
步驟 | 描述 |
---|---|
1 | Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project. |
2 | Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter. |
3 | Create Java classes HelloWorld and MainApp under the com.yiibai package. |
4 | Create Beans configuration file Beans.xml under the src folder. |
5 | The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below. |
這裡是HelloWorld.java 文件的內容:
package com.yiibai; 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 的內容:
package com.yiibai; 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(); } }
有以下兩個要點需要注意在主要程序中:
-
第一步是創建工廠對象,我們使用的框架API的 FileSystemXmlApplicationContext來從給定的路徑加載bean配置文件之後,創建工廠bean。API的FileSystemXmlApplicationContext()需要創建和初始化所有的對象。在XML bean配置文件中提到的bean類。
-
第二個步驟是用來使用創建的上下文的getBean()方法獲得所需的bean。此方法使用bean的id返回,最終可以構造到實際對象的通用對象。一旦有了對象,我們就可以使用這個對象調用任何類方法。
以下是bean配置文件beans.xml中的內容
<?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.yiibai.HelloWorld"> <property name="message" value="Hello World!"/> </bean> </beans>
一旦創建源代碼和bean配置文件完成,讓我們運行應用程序。如果一切順利,這將打印以下信息:
Your Message : Hello World!