如果说BeanFactory是Spring的心脏,那么ApplicationContext就是完整的身躯了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。

ApplicationContext类体系结构

ApplicationContext的主要实现类ClassPathXmlApplicationContextFileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件

和BeanFactory初始化相似,ApplicationContext的初始化也很简单,如果配置文件放置在类路径下,用户可以优先使用ClassPathXmlApplicationContext实现类:

ApplicationContext ctx = new ClassPathXmlApplicationContext(“com/baobaotao/context/beans.xml”)

对于ClassPathXmlApplicationContext来说,”com/baobaotao/context/beans.xml”等同于”classpath: com/baobaotao/context/beans.xml”。

如果配置文件放置在文件系统的路径下,则可以优先考虑使用FilySystemXmlApplicationContext实现类:

ApplicationContext ctx =new FileSystemXmlApplicationContext(“com/baobaotao/context/beans.xml”);

对于FileSystemXmlApplicationContext来说,“com/baobaotao/context/beans.xml”等同于“file:com/baobaotao/context/beans.xml”。

还可以指定一组配置文件,Spring会自动将多个配置文件在内存中”整合”成一个配置文件,如下所示:

ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{“conf/beans1.xml”,”conf/beans2.xml”});

当然FileSystemXmlApplicationContext和ClassPathXmlApplicationContext都可以显式使用带资源类型(classpath:或file:)前缀的路径,它们的区别在于如果不显式指定资源类型前缀,将分别将路径解析为文件系统路径和类路径罢了

获取ApplicationContext实例后,就可以像BeanFactory一样调用getBean(beanName)返回Bean了。

ApplicationContext的初始化和BeanFactory有一个重大的区别BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;ApplicationContext则在初始化应用上下文时就实例化所有单实例的Bean

因此ApplicationContext的初始化时间会比BeanFactory稍长一些,不过稍后的调用则没有”第一次惩罚”的问题。



企业级开发过程中,一般使用Spring注解开发使用注解获取Spring容器管理的类(这些类都必须是Spring容器中的类)
开发过程中,有时会遇到需要在普通类中注入spring管理的单例bean。直接注入是注入不进去的,这是就需要创建一个工具类来获取Spring容器管理的bean

ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用相关推荐

  1. java技术--SpringContextUtil类的作用

    企业级开发过程中,一般使用Spring注解开发.使用注解获取Spring容器管理的类(这些类都必须是Spring容器中的类)! 开发过程中,有时会遇到需要在普通类中注入spring管理的单例bean. ...

  2. Spring框架中ApplicationContext与BeanFactory的区别

    前言 Spring框架中ApplicationContext与BeanFactory的区别.其中,BeanFactory为ApplicationContext的父类,是一种继承关系,Applicati ...

  3. BeanFactory 和 ApplicationContext 两个容器的区别与联系

    BeanFactory 是最简单的容器,由 org.springframework.beans.factory.BeanFactory 接口定义,采用懒加载(lazy-load),所以容器启动比较快. ...

  4. ApplicationContext 和 BeanFactory 的区别

    概述 首先解释一下两个名词: BeanFactory 是 Bean 工厂. ApplicationContext 是应用上下文. ApplicationContext 和 BeanFactory 都是 ...

  5. springboot 启动 ApplicationContext applicationContext = null

    ApplicationContext applicationContext = null Springboot 启动的时候,调用报错了,applicationContext = null  该如何处理 ...

  6. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  7. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  8. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  9. java中的class 类的作用_Java中Class和单例类的作用与类成员的理解

    Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...

最新文章

  1. 简述Field,Attribute,Property的区别
  2. 從三種方式看SQL的使用程度
  3. Spark SQL 编程API入门系列之SparkSQL数据源
  4. Linux中的.bash_ 文件的详细说明
  5. 20条.net编码习惯 【转】
  6. docker强制删除none的image镜像
  7. 用C语言打印菱形图案
  8. 微信视频号怎么运营?实操分享我的30个经验
  9. System32和SysWoW64的区别(转载)
  10. 如何向本地 PAC 中添加网站
  11. Windows进程通信之剪贴板
  12. web3j智能合约错误:java.lang.ArrayIndexOutOfBoundsException
  13. P5027 Barracuda
  14. 华为hcie考试费用多少钱
  15. Linux云服务器使用命令安装Redis
  16. 【转】值得推荐的C/C++框架和库
  17. 西藏-让我魂牵梦绕的地方
  18. c语言syscall函数,在C中调用syscall函数时出现问题
  19. [CodeVS 1166] 高精度加法
  20. 三网融合试点方案定论 广电成最大赢家

热门文章

  1. 10-Flink集群的高可用(搭建篇补充)
  2. 第十届蓝桥杯(含题目文件下载)
  3. #41 最短路(分治+线性基)
  4. Unity使用陀螺仪控制Camera
  5. (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数...
  6. linux内核3.4基于wakeup_source的autosleep机制分析
  7. 技术团队新官上任之中层篇
  8. 手把手教你安装Navicat——靠谱的Navicat安装教程
  9. Image转Base64镶嵌网页中
  10. html文本超出自动换行、显示省略号