一.ApplicationContext不是最顶级的IOC容器
IOC容器都是ApplicationContext接收ClassPathXmlApplicationContext
BeanFactory才是IOC容器最顶级的接口,但是Application功能更强大
二.ListableBeanFactory
- 它是BeanFactory接口的扩展,他可以实现枚举其所有bean实例,而不是按客户的要求按名称--尝试进行bean查找 。预记载其所有bean定义的beanFactory实现
- 提供Bean迭代
三.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
基于XML
- 可刷新
- 可配置
九.AnnotationConfigApplicationContext
总结:
- SpringFramework原生的IOC容器的特点:分层次,可列举,可配置
- SpringBoot在SpringFrameWork原生的IOC容器做了扩展,都是基于注解的扩展