一.ApplicationContext不是最顶级的IOC容器

IOC容器都是ApplicationContext接收ClassPathXmlApplicationContext

ApplicationContext ctx = new ClassPathXmlApplicationcontext("applicationContext.xml");

BeanFactory才是IOC容器最顶级的接口,但是Application功能更强大

SpringBoot学习笔记(五)IOC_xml

二.ListableBeanFactory

  • 它是BeanFactory接口的扩展,他可以实现枚举其所有bean实例,而不是按客户的要求按名称--尝试进行bean查找 。预记载其所有bean定义的beanFactory实现
  • 提供Bean迭代

SpringBoot学习笔记(五)IOC_spring boot_02

 三.EnvironmentCapable

 获取Environment类型的域

四.MessageSource

用于解析消息的策略接口,支持此类消息的参数化和国际化

五.ApplicationEventPublisher

  • 策略接口。用于将位置模式(Ant样式的路径模式)解析为Resource对象
  • 这是ResourceLoader接口的扩展。可以检查传入的ResourceLoader是否也实现了此扩展接口

六.ConfigurableApplicationContext

  • 他是一种SPI接口,将大多数ApplicationContext子类实现。除了ApplicationContext接口中的应用程序上下文客户端方法外,提供了用于配置ApplicationContext功能
  • 配置和生命周期方法封装在这里,避免代码显式暴露给ApplicationContext客户端代码

七.AbstractApplicationContext

  • ApplicationContext接口抽象实现。不强制配置存储类型,简单实现通用上下文功能。这个嘞使用模板方法模式,需要具体的子类实现抽象方法
  • 与普通BeanFactory相比,ApplicationContext应该检测其内部bean工厂中定义的特殊bean
  • 此类自动注册在上下文中定义bean的BeanFactoryPostProcessors,BeanPostProcessors和ApplicationListeners

八.ClassPathXmlApplicationContext

SpringBoot学习笔记(五)IOC_学习_03

基于XML

  • 可刷新
  • 可配置

九.AnnotationConfigApplicationContext

SpringBoot学习笔记(五)IOC_xml_04

总结:

  1. SpringFramework原生的IOC容器的特点:分层次可列举可配置
  2. SpringBoot在SpringFrameWork原生的IOC容器做了扩展,都是基于注解的扩展