一 定义方法
Spring提供了ResourceLoader接口用于实现不同的Resource加载策略,即将不同Resource实例的创建交给ResourceLoader来计算.
接口提供了两个方法和一个字符串常量:
/** class path: "classpath:". */ String CLASSPATH_URL_PREFIX = ResourceUtils.CLASSPATH_URL_PREFIX; /** * 通过提供的资源location参数获取Resource实例,该实例可以是ClasPathResource、FileSystemResource、UrlResource等, * 但是该方法返回的Resource实例并不保证该Resource一定是存在的,需要调用exists方法判断 */ Resource getResource(String location); /** * 此方法将ClassLoader暴露出来,可以直接调用getClassLoader()方法获得ClassLoader,而不是依赖于Thread Context ClassLoader, * 因为有些时候ResourceLoader内部使用自定义的ClassLoader */ @Nullable ClassLoader getClassLoader();
二 ResourcePatternResolver
在实际开发中经常会遇到需要通过某种匹配方式查找资源,比如通配符,而且可能有多个资源匹配这种模式,在Spring中提供了ResourcePatternResolver接口用于实现这种需求:
接口定义了一个方法和一个正则字符串常量:
/** * 用于查找匹配classpath下所有的匹配Resource */ String CLASSPATH_ALL_URL_PREFIX = "classpath*:"; /** * 用于根据传入的locationPattern查找和其匹配的Resource实例,并以数组的形式返回,在返回的数组中不可以存在 * 相同的Resource实例 */ Resource[] getResources(String locationPattern) throws IOException;