ApplicationContext和BeanFactory都是用于加载Bean的, 但是二者之间存在区别, ApplicationContext能够提供更多的扩展功能.
1).BeanFactory可以理解为含有bean的集合工厂类, 其中包含了bean的定义, 以便在接收到客户端请求时将对应的bean实例化.
同时在实例化对象时生成写作类之间的关系, 将bean自身与bean客户端的配置中解放出来, BeanFactory还包含了bean生命周期的控制, 调用客户端的初始化方法和销毁方法.
2).ApplicationContext接口是一个BeanFactory基础上封装了更多功能的,Spring中最为常用的IoC容器,其包含两个子接口:ConfigurableApplicationContext、WebApplicationContext。
ApplicationContext同样具有bean的定义,bean的关联关系的设置,根据请求分发bean的功能,但是ApplicationContext提供了扩展功能, 主要包括:
提供了支持国际化的文本消息;
统一的资源文件读取方式;
已在监听器中注册的bean的事件,通过实现ApplicationContextAware接口;
ApplicationContext的三个实现类:a、ClassPathXmlApplication:把上下文文件当成类路径资源
b、FileSystemXmlApplication:从文件系统中的XML文件载入上下文定义信息
c、XmlWebApplicationContext:从Web系统中的XML文件载入上下文定义信息