BeanFactory 和 ApplicationContext
org.springframework.beans.factory.BeanFactory 负责读取Bean定义文件,管理对象的加载,生成,维护Bean对象与Bean对象之间的依赖关系,负责Bean的生命周期。
org.springframework.context.ApplicationContext 的基本功能与BeanFactory很相似,它也具有负责读取Bean定义文件,维护Bean之间的依赖关系等功能,除此之外ApplicationContext还提供了一个应用程序所需的更完整的框架功能,例如:
- 提供取得资源文件(Resource file)更方便的方法;
- 提供文字消息解析的方法;
- 支持国际化(Internationalization ,I18N)消息;
- ApplicationContext可以发布事件,对事件感兴趣的Bean可以接收到这些事件;
Spring的创始人Rod Johnson建议使用ApplicationContext来取代BeanFactory,在 实现ApplicationContext的类中,最常用的大概是以下3个:
- org.springframework.context.support.FileSystemXmlApplicationContext
/** 可指定XML定义文件的相对路径或绝对路径来读取定义文件*/
- org.springframework.context.support.ClassPathXmlApplicationContext
/** 从Classpath设定路径来读取XML定义文件*/
- org.springframework.web.context.support.XmlWebApplicationContect
/** 在Web应用程序的文件架构中,指定相对位置来读取定义文件*/
==============
修改前一个例子的代码
-------------------------------------------------------------------------------
package only;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringDemo {
public static void main(String[] args) {
ApplicationContext context=
new FileSystemXmlApplicationContext("src/applicationContext.xml");
HelloBean hello=(HelloBean)context.getBean("helloBean"); //获得Bean对象
System.out.println(hello.getHelloWord()); //应用Bean对象
}
}