ApplicationContext家族体系
高级容器均实现了ApplicationContex这个接口,为了区别于普通容器,高级容器一般被称为Contex(上下文),之所以是高级容器,因为它实现了更多的接口:
ApplicationContex继承的接口
Environment 可以理解为容器的一些启动参数,类如java里的 -Dparam1=value1 对于web容器,还可以根据此获取到servlet的一些配置信息
继承了ListableBeanFactory 意味着可以根据列表的方式管理bean
继承了HierarchicalBeanFactory 意味着可以基于多层级的结构来实现每一层级对bean的管理
继承了ResourcePatternResolver 可以加载资源文件,相当于ResourceLoader,分析beandefinition加载的时候会提到
继承了MessageSource 可以管理一些Message,实现国际化等功能
继承了ApplicationEventPublisher 可以具备事件发布的能力,容器启动的时候会注册一些Listener,就是用来监听容器发布的事件的(观察者设计者模式)
ApplicationContext常用容器
传统的基于XML配置的经典容器
- FileSystemXmlApplicationContext:从文件系统加载配置
- ClassPathXmlApplicationContext:从classpath加载配置
- XmlWebApplicationContext:用于Web应用程序的容器
目前比较流行的容器(都是基于注解的)
- AnnotationConfigServletWebServerApplicationContext
- AnnotationConfigReactiveWebServerApplicationContext
- 满足响应式容器需求,在springboot的boot模块下
- AnnotationConfigApplicationContext
- spring框架里,普通的非web应用基本都用这个
|