首页 » Java » 菜鸟的成长之路——应用上下文(ApplicationContext)

菜鸟的成长之路——应用上下文(ApplicationContext)

原文 http://blog.csdn.net/madman_donghui/article/details/79247003

2018-02-04 02:00:22阅读(356)

  如果说BeanFactory是spring的心脏,那么ApplicationContext就是spring的身躯了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的的功能。还记得上节课我们提到XmlBeanFactory过期的api吗?他的代替方法就是ApplicationContext。

1、ApplicationContext是什么?

  ApplicationContext,即应用上下文。ApplicationContext是spring的一个接口,它主要有两个实现类,ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。
下面我们来看一下ApplicationContext的结构体系:
<a href=菜鸟的成长之路——应用上下文(ApplicationContext)" src="http://img.blog.csdn.net/20180203151946226?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFkbWFuX2RvbmdodWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">
  可以看得出来,ApplicationContext接口的最终父接口是BeanFactory,而最终的实现类,正是我们刚才所说的ClassPathXmlApplicationContext和FileSystemXmlApplicationContext两个类。

2、两个最终实现类有什么区别?

  ClassPathXmlApplicationContext默认从类路径加载配置文件,而FileSystemXMLApplicationContext默认从文件系统中加载配置文件,其他方面没有很大区别。

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringTest{
    public static void main(String[] args) {
//      ApplicationContext content = new FileSystemXmlApplicationContext("//Users/beijingduanluo/Documents/applicationContext.xml");
        ApplicationContext content = new ClassPathXmlApplicationContext("applicationContext.xml");
        People peo = (People) content.getBean("peo");
        System.out.println(peo);
    }
}

  值得注意的是,FileSystemXmlApplicationContext的构造传参如果是字符串并且第一个字符是“/”的话,spring会自动去掉这个“/”,所以必要的时候,需要多谢个“/”,就像上面的例子。

3、应用上下文相对于BeanFactory来说,有哪些扩展?

  我们分析一下ApplicationContext相对于BeanFactory多实现的这些接口:

ApplicationEventPublisher:使容器拥有了事件的功能,包括容器启动事件、关闭事件等。 MessageSource:为应用提供i18n国际化消息访问的功能。 ResourcePatternResolver:这个接口让容器可以通过带前缀的ant风格的资源文件路径装载spring的配置文件,其实就是放弃了spring的Resource类,并直接在ApplicationContext构造函数传参带通配符的路径字符串。 LifeCycle:该接口提供了start()和stop()两个方法,主要用于控制异步处理。
  这些接口,是BeanFactory没有,而ApplicationContext特有的,也就意味着ApplicationContext要比BeanFactory多出这些功能。所以我们经常这么来描述BeanFactory和ApplicationContext的关系:BeanFactory面向的是程序底层,ApplicationContext面向的应用功能。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹