经典面试题-BeanFactory和ApplicationContext有什么区别?

  • 2019 年 11 月 7 日
  • 筆記

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102902308

  • BeanFactory 可以理解为含有bean集合的工厂类。BeanFactory 包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。
  • BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中解放出来。BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initialization methods)和销毁方法(destruction methods)。
  • 从表面上看,ApplicationContext如同BeanFactory 一样具有bean定义、bean关联关系的设置,根据请求分发bean的功能。但ApplicationContext在此基础上还提供了其他的功能。
    • 1.提供了支持国际化的文本消息
    • 2.统一的资源文件读取方式
    • 3.已在监听器中注册的bean的事件

以下是三种较常见的 ApplicationContext 实现方式:

  • 1、ClassPathXmlApplicationContext:从classpath的XML配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中取得。
ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);
  • 2、FileSystemXmlApplicationContext :由文件系统中的XML配置文件读取上下文。
ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”);
  • 3、XmlWebApplicationContext:由Web应用的XML文件读取上下文。