Spring学习(四)Spring中常用的容器-ApplicationContext
【Spring学习(四)Spring中常用的容器-ApplicationContext】在Spring中我们经常使用另一种容器ApplicationContext,较之BeanFactory,它进一步扩展了BeanFactory基本容器的功能,包括BeanFactoryPostProcessor,BeanPostProcessor以及特殊类型bean自动识别。容器启动后Bean实例自动初始化、国际化支持、Bean容器内事件发布等。
常用的ApplicationContext实现类:
FilesSystemXmlApplicationContext:从文件系统加载bean定义及相关资源
ClassPathXmlApplication:从ClassPath 中的xml加载Bean定义及相关资源
XmlWebApplicationContext:专为Web程序定制的实现
一、统一加载策略
1、Resource接口可以根据资源存在的不同类型,不同场合进行访问。较为常用的有classPathResource,FileSystemResource,UrlResource
2、ResourceLoader用来定位和查找资源:默认实现类DefaultResourceLoader 及针对文件系统的FileSystemLoader[返回的也是FileSystemResouce]
3、ResourcePartternResolver扩展ResourceLoader,根据资源路径的匹配模式,可以批量获取Resource,常用的实现类PathMatchingResourcePatternResolver(在构造时需传入一个ResourceLoader,如不传入则采用默认的DefaultResourceLoader)
二、ApplicationContext
ApplicationContxet继承了ResourcePartternResolver接口,AbstractApplicationContext继承了DefaultResourceLoader ,ApplicationContext又将自己作为参数实现了ResourcePartternResolver批量获取资源的方法。因此ApplicationContext就是一个ResouceLoader(ResourcePatternResolver)
三、ApplicationContext事件发布_
Spring事件继承自java.util.EvenObject,spring提供了三种实现:
①ContextColosedEvent:容器在关闭时发布的事件类型
②ContextRefreshedEvent:容器在初始化或更新时发布的事件类型:web请求处理后发布的事件类型
③RequestHandledEvent:Web请求处理后发布的事件
当然,还可以自定义容器事件,只需自定义事件继承ApplicationContextEvent类,事件处理器实现ApplicationListener接口,并将它们注入到Spring容器中,使用容器的publishEvent方法进行发布
推荐阅读
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 奔向你的城市
- 由浅入深理解AOP
- Activiti(一)SpringBoot2集成Activiti6
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 四首关于旅行记忆的外文歌曲
- CET4听力微技能一
- 亲子日记第186篇,2018、7、26、星期四、晴
- 一起来学习C语言的字符串转换函数