1.1 Spring IoC 容器
从昨天的例子当中我们已经知道 spring IoC 容器的作用, 它可以容纳我们所开发的各种 Bean. 并且我们可以从中获取各种发布在 Spring IoC 容器里的 Bean, 并通过描述得到它.
1.2 Spring IoC 容器的设计
Spring IoC 容器的设计主要是基于 BeanFactory 和 ApplicationContext 两个接口, 其中 ApplicationContext 是 BeanFactory 的子接口之一. 换句话说 BeanFactory 是 Spring IoC 容器所定义的最底层接口, 而 ApplicationContext 是其高级接口之一, 并且对 BeanFactory 功能做了许多有用的扩展, 所以在绝大部分的工作场景下, 都会使用 ApplicationContext 作为 Spring IoC 容器.
| |||||||
2.1 Spring BeanFactory 容器
这是一个最简单的容器, 它主要的功能是为依赖注入 (DI) 提供支持, 这个容器接口在 org.springframework.beans.factory.BeanFactor 中被定义. BeanFactory 和相关的接口, 比如 BeanFactoryAware,DisposableBean,InitializingBean, 仍旧保留在 Spring 中, 主要目的是向后兼容已经存在的和那些 Spring 整合在一起的第三方框架.
在 Spring 中, 有大量对 BeanFactory 接口的实现. 其中, 最常被使用的是 XmlBeanFactory 类. 这个容器从一个 xml 文件中读取配置元数据, 由这些元数据来生成一个被配置化的系统或者应用.
上次的例子, 只修改了测试文件内容:
在这里 XmlBeanFactory()API 不常用, 接下来就是我们常用的 ApplicationContext
2.2 Spring ApplicationContext 容器
Application Context 是 BeanFactory 的子接口, 也被成为 Spring 上下文. Application Context 是 spring 中较高级的容器. 和 BeanFactory 类似, 它可以加载配置文件中定义的 bean, 将所有的 bean 集中在一起, 当有请求的时候分配 bean.ApplicationContext 包含 BeanFactory 所有的功能. 一般情况下, 相对于 BeanFactory,ApplicationContext 会更加优秀.
最常被使用的 ApplicationContext 接口实现:
|
|
|
之前橘子那个例子当中已经做过 ClassPathXmlApplicationContext 的例子了, 接下来, 让我们看一个关于 FileSystemXmlApplicationContext 的例子.
例子:
其他的地方没有变, 把之前的 ClassPathXmlApplicationContext()API 换成 FileSystemXmlApplicationContext ()API 去加载 bean 可用配置 xml 文件. 使用 FileSystemXmlApplicationContext 和使用 ClassPathXmlApplicationContext 的区别在于: FileSystemXmlApplicationContext 在指定的文件系统路径下查找 xml 文件; 而 ClassPathXmlApplicationContext 是在所有的类路径 (包含 JAR 文件) 下查找 xml 文件.
如 :
- ApplicationContext context = new FileSystemXmlApplicationContext("C:/bean.xml");
- ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
来源: https://www.cnblogs.com/ysource/p/12336164.html