Spring ApplicationContext 容器
Application Context 是 Spring 的高级容器。 与 BeanFactory 类似,它可以加载 bean 定义,将 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 - 此容器从 Web 应用程序中加载包含所有 bean 定义的 XML 文件。
我们已经在 Spring Hello World Example 中看到了 ClassPathXmlApplicationContext 容器的示例,当我们讨论基于 Web 的 Spring 应用程序时,我们将在单独的章节中更多地讨论 XmlWebApplicationContext。 因此,让我们看一个关于 FileSystemXmlApplicationContext 的示例。
示例
假设我们已经安装 IDEA,按照下面的步骤,我们可以创建一个 Spring 应用程序。
步骤 | 描述 |
---|---|
1 | 创建一个名为 SpringExample 的工程并在 src 文件夹下新建一个名为 com.jiyik 文件夹。 |
2 | 在 com.jiyik 文件夹下创建 HelloWorld.java 和 MainApp.java 两个类文件。 |
3 | 在 src 文件夹下创建 Bean 的配置文件 Beans.xml |
4 | 最后的步骤是创建所有 Java 文件和 Bean 的配置文件的内容,按照如下所示步骤运行应用程序。 |
下面是文件 HelloWorld.java 的内容:
HelloWorld.java
package com.jiyik; 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 的内容:
MainApp.java
package com.jiyik; 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(); } }
在主程序当中,我们需要注意以下两点:
- 第一步生成工厂对象。加载完指定路径下 bean 配置文件后,利用框架提供的 FileSystemXmlApplicationContext API 去生成工厂 bean。FileSystemXmlApplicationContext 负责生成和初始化所有的对象,比如,所有在 XML bean 配置文件中的 bean。
- 第二步利用第一步生成的上下文中的 getBean() 方法得到所需要的 bean。 这个方法通过配置文件中的 bean ID 来返回一个真正的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。
下面是配置文件 Beans.xml 中的内容:
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.jiyik.HelloWorld"> <property name="message" value="Hello World!"/> </bean> </beans>
如果你已经完成上面的内容,接下来,让我们运行这个应用程序。如果程序没有错误,你将从控制台看到以下信息:
Your Message : Hello World!