zoukankan      html  css  js  c++  java
  • Spring PathMatchingResourcePatternResolver

    Spring PathMatchingResourcePatternResolver

    PathMatchingResourcePatternResolver是ResourcePatternResolver的实现来,用来解析一个或多个匹配资源的指定资源位置路径,资源路径可能是唯一的,也可能是包含classpath*:前缀,或者匹配Ant风格的特殊表达式。
    比如 file:C:/context.xml,classpathZ:/context.xml,/WEB-INF/context.xml,将会返回一个resource实例对象

    继承体系参考:资源访问

    其主要属性如下

    //主要用于程序运行状态中,动态获取方法的信息
    @Nullable
    private static Method equinoxResolveMethod;
    //资源加载类
    private final ResourceLoader resourceLoader;
    //用来匹配Ant风格的匹配规则
    private PathMatcher pathMatcher = new AntPathMatcher();
    
    //根据给定的资源路径或Ant风格的路径匹配符合的资源文件加载为Resource对象
    @Override
    public Resource[] getResources(String locationPattern) throws IOException {
       Assert.notNull(locationPattern, "Location pattern must not be null");
        //判断是否以classpath*开头
       if (locationPattern.startsWith(CLASSPATH_ALL_URL_PREFIX)) {
          // a class path resource (multiple resources for same name possible)
          if (getPathMatcher().isPattern(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()))) {
             //根据Ant风格给定的字符串路径匹配所有的资源对象
             return findPathMatchingResources(locationPattern);
          }
          else {
             // 查找所classpath路径下的符合规则的资源
             return findAllClassPathResources(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()));
          }
       }
       else {
          // 如果路径资源以war:开头,则执行如下加载资源的方法
          int prefixEnd = (locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 :
                locationPattern.indexOf(':') + 1);
          if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) {
             // a file pattern
             return findPathMatchingResources(locationPattern);
          }
          else {
             // a single resource with the given name
             return new Resource[] {getResourceLoader().getResource(locationPattern)};
          }
       }
    }
    

    测试如下:

    PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
    
    @Test
    public void testfindPathMatchingResources() throws Exception {
    
        Resource[] resource = pathMatchingResourcePatternResolver.getResources("classpath*:/config/*.txt");
    
        for (int i = 0; i < resource.length; i++) {
            String filename = resource[i].getFilename();
            URL url = resource[i].getURL();
            System.out.println(url);
        }
        // System.out.println(resource);
    }
    
  • 相关阅读:
    python学习笔记—— 函数
    python学习笔记——异常
    javascript 本地数据库例子
    python学习笔记——web.py
    远程桌面连接的安装和设置
    word中如何设置页码从任意页开始
    Payoneer取人民币全过程(ATM)
    菜鸟学习四种制作Word自动生成目录的方法!
    如何设置Windows 7远程桌面连接
    Freelancer:全球最大自由职业者线上市场是如何养成的
  • 原文地址:https://www.cnblogs.com/haizhilangzi/p/12805163.html
Copyright © 2011-2022 走看看