springIOC源码接口分析(六):ResourceLoader

一 定义方法

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;

三 实现类

猜你喜欢

转载自www.cnblogs.com/houzheng/p/11850716.html