统一资源加载策略
ApplicationContext既然要加载配置文件,就需要一个工具可以用来加载这些资源,因此而出现了ResourceLoader。ApplicationContext实则间接继承了ResourceLoader接口,可以用来对Spring内的资源做一个统一的加载。
在使用中最常用的两个加载器就是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。简单的使用代码如下:
1 | ResourceLoader resourceLoader = new ClassPathXmlApplicationContext("配置文件路径"); |
ResourceLoader中增加了一种新的资源路径协议:classpath:和classpath:,classpath:与classpath:的唯一区别在于,如果能够在classpath中找到多个指定的资源,则返回多个。
ClassPathXmlApplicationContext和FileSystemXmlApplicationContext在处理资源在记得默认行为上有所不用。当ClassPathXmlApplicationContext在实例化的时候,即使没有执行classpath:或者classpath*:等前缀,它会默认从classpath中加载bean定义配置文件。而FileSystemXmlApplicationContext会默认从文件系统中加载bean定义文件。
其他特性
ApplicationContext还提供了一些其他特性,这里就简单介绍一下,不过多描述。
- 国际化信息支持:ApplicationContext有两种国际化支持的方式,一个是Locale结合ResourceBundle,它可以绑定地区。另外一个就是MessageSource可以统一国际化信息的访问方式。
- 容器内部事件发布:JavaSE提供了实现自定义时间发布功能的基础类,即EventListener和EventObject。
- 多配置模块加载的简化:在配置应用的时候,为了更好的划分逻辑层次和分工,而延伸到个让容器同时读入划分到不同配置文件的信息。