返回介绍

第 6 章 容器的功能扩展

发布于 2025-04-22 22:09:11 字数 1420 浏览 0 评论 0 收藏

经过前面几章的分析,相信大家已经对 Spring 中的容器功能有了简单的了解,在前面的章节中我们一直以 BeanFacotry 接口以及它的默认实现类 XmlBeanFactory 为例进行分析,但是, Spring 中还提供了另一个接口 ApplicationContext,用于扩展 BeanFacotry 中现有的功能。

ApplicationContext 和 BeanFacotry 两者都是用于加载 Bean 的,但是相比之下,Application Context 提供了更多的扩展功能,简单一点说:ApplicationContext 包含 BeanFactory 的所有功能。通常建议比 BeanFactory 优先,除非在一些限制的场合,比如字节长度对内存有很大的影响时(Applet)。绝大多数“典型的”企业应用和系统,ApplicationContext 就是你需要使用的。

那么究竟 ApplicationContext 比 BeanFactory 多出了哪些功能呢?还需要我们进一步的探索。首先我们来看看使用两个不同的类去加载配置文件在写法上的不同。

使用 BeanFactory 方式加载 XML。

BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));

使用 ApplicationContext 方式加载 XML。

ApplicationContext bf = new ClassPathXmlApplicationContext("beanFactoryTest.xml");

同样,我们还是以 ClassPathXmlApplicationContext 作为切入点,开始对整体功能进行分析。

public ClassPathXmlApplicationContext(String configLocation) throws BeansException {

 this(new String[] {configLocation}, true, null);

}

public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh,

ApplicationContext parent) throws BeansException {

 super(parent);

 setConfigLocations(configLocations);

  if (refresh) {

  refresh();

 }

}

设置路径是必不可少的步骤,ClassPathXmlApplicationContext 中可以将配置文件路径以数组的方式传入,ClassPathXmlApplicationContext 可以对数组进行解析并进行加载。而对于解析及功能实现都在 refresh() 中实现。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。