application context 是 beanfactory 的子接口,也被成为 spring 上下文。
application context 是 spring 中较高级的容器。和 beanfactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.applicationcontext interface 接口中定义。
applicationcontext 包含 beanfactory 所有的功能,一般情况下,相对于 beanfactory,applicationcontext 会更加优秀。当然,beanfactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。
最常被使用的 applicationcontext 接口实现:
filesystemxmlapplicationcontext:该容器从 xml 文件中加载已被定义的 bean。在这里,你需要提供给构造器 xml 文件的完整路径。
classpathxmlapplicationcontext:该容器从 xml 文件中加载已被定义的 bean。在这里,你不需要提供 xml 文件的完整路径,只需正确配置 classpath 环境变量即可,因为,容器会从 classpath 中搜索 bean 配置文件。
我们已经在 spring hello world example章节中看到过 classpathxmlapplicationcontext 容器,并且,在基于 spring 的 web 应用程序这个独立的章节中,我们讨论了很多关于 xmlwebapplicationcontext。所以,接下来,让我们看一个关于 filesystemxmlapplicationcontext 的例子。
假设我们已经安装 eclipse ide,按照下面的步骤,我们可以创建一个 spring 应用程序。
步骤 | 描述 |
---|---|
1 | 创建一个名为 springexample 的工程, 在 src 下新建一个名为 com.tutorialspoint 的文件夹src |
2 | 点击右键,选择 add external jars 选项,导入 spring 的库文件,正如我们在 spring hello world example 章节中提到的导入方式。 |
3 | 在 com.tutorialspoint 文件夹下创建 helloworld.java 和 mainapp.java 两个类文件。 |
4 | 文件夹下创建 bean 的配置文件 beans.xml。 |
5 | 最后的步骤是编辑所有 java 文件的内容和 bean 的配置文件,按照以前我们讲的那样去运行应用程序。 |
下面是文件 helloworld.java 的内容:
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 的内容:
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();
}
}
在主程序当中,我们需要注意以下两点:
第一步生成工厂对象。加载完指定路径下 bean 配置文件后,利用框架提供的 filesystemxmlapplicationcontext api 去生成工厂 bean。filesystemxmlapplicationcontext 负责生成和初始化所有的对象,比如,所有在 xml bean 配置文件中的 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.tutorialspoint.helloworld">
<property name="message" value="hello world!"/>
</bean>
</beans>
如果你已经完成上面的内容,接下来,让我们运行这个应用程序。如果程序没有错误,你将从控制台看到以下信息:
your message : hello world!