`
y806839048
  • 浏览: 1134864 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用路径通配符加载Resource,

阅读更多

http://blog.csdn.net/liufengyinglxj/article/details/8646417(这个比较好)

下面又是一个:

spring提供了强大的Ant模式通配符匹配,从同一个路径能匹配一批资源。

Ant路径通配符支持"?"、"*"、"**",注意通配符匹配不包括目录分隔符“/”。

“?”:匹配一个字符,如"config?.xml"可匹配"config1.xml".

“*”:匹配零个或多个字符串,如“com/*/config.xml”将匹配“cn/feng/config.xml”,但不匹配匹配“com/config.xml”(因为这里匹配的是字符串,如果是目录的话则可以);而“com/config-*.xml”将匹配“com/config-dao.xml”;

"**":匹配路径中的零个或多个目录。如“com/**/config.xml”将匹配“com/config.xml”,也匹配“com/feng/spring/config.xml”;而“com/feng/config-**.xml”将匹配“com/feng/config-dao.xml”,即把“**”当做两个“*”处理。

Spring在加载类路径资源时除了提供前缀“classpath:”的来支持加载一个Resource,还提供一个前缀“classpath*:”来支持加载所有匹配的类路径Resource。

Spring提供了ResourcePatternResolver接口来加载多个Resource.

[java] view plain copy

    package com.feng.spring.chapter2.helloworld; 
     
    import java.io.IOException; 
     
    import org.springframework.core.io.Resource; 
    import org.springframework.core.io.ResourceLoader; 
     
    public interface ResourcePatternResolver extends ResourceLoader{ 
        String CLASSPATH_ALL_URL_PREFIX = "classpath*:"; 
        Resource[] getResources(String locationPattern) throws IOException;//添加了此方法用来接收多个Resource 
    } 


一、"classpath":用于加载类路径(包括jar包)中的一个且仅一个资源;对于多个匹配的也只返回一个。如果需要多个匹配的则考虑"classpath*."前缀。

[java] view plain copy

    package com.feng.spring.chapter2.helloworld; 
     
     
    import java.io.IOException; 
     
    import org.junit.Test; 
    import org.springframework.core.io.Resource; 
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver; 
     
     
    public class HelloTest { 
            @Test 
            public void testClasspathPrefix()throws IOException{ 
                ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); 
                //只加载一个绝对匹配Resource,且通过ResourceLoader.getResource进行加载 
                Resource resources=resolver.getResource("classpath:META-INF/INDEX.LIST"); 
                 Assert.assertEquals(1, resources.length); 
                //只加载一个匹配的Resource,且通过ResourceLoader.getResource进行加载 
                 resources = resolver.getResource("classpath:META-INF/*.LIST"); 
                 Assert.assertTrue(resources.length == 1);  
            } 
    } 


二、"classpath*":

用于加载类路径(包括jar包)中所有的匹配的资源。

[java] view plain copy

    package com.feng.spring.chapter2.helloworld; 
     
     
    import java.io.IOException; 
     
    import javax.annotation.Resource; 
     
    import junit.framework.Assert; 
     
    import org.junit.Test; 
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver; 
     
     
    public class HelloTest { 
            @Test 
            public void testClasspathAsteriskPrefix()throws IOException{ 
                ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); 
                 
                //将加载多个绝对匹配的所有Resource 
                //将首先通过ClassLoader.getResource("META-INF")加载非模式路径部分 
                //然后进行遍历模式匹配 
                Resource[] resources = (Resource[]) resolver.getResources("classpath*:META-INF/INDEX.LIST");  
                Assert.assertTrue(resources.length > 1);   
                //将加载多个模式匹配的Resource 
                resources = (Resource[]) resolver.getResources("classpath*:META-INF/*.LIST"); 
                 Assert.assertTrue(resources.length > 1);    
            } 
    } 




带通配符的classpath使用“ClassLoader”的“Enumeration<URL> getResources(String name)”方法来查找通配符之前的资源,然后通过模式匹配来获取匹配的资源。如“classpath:META-INF/*.LIST”将首先加载通配符之前的目录“META-INF”,然后再遍历路径进行子路径匹配从而获取匹配的资源。

三、"file":加载一个或多个系统中的Resource。如:"file:D/*.txt"将返回D盘下的所有txt文件。

四、无前缀:通过ResourceLoader实现加载一个资源。

ApplicationContext提供的getResource方法将获取资源委托给ResourcePatternResolver实现,默认使用PathMatingResourcePatternResolver.
分享到:
评论

相关推荐

    Java使用路径通配符加载Resource与profiles配置使用详解

    Java使用路径通配符加载Resource与profiles配置使用详解 本文主要介绍了Java使用路径通配符加载Resource与profiles配置使用详解。通过示例代码,详细介绍了Java使用路径通配符加载Resource与profiles配置的使用方法...

    Spring中使用classpath加载配置文件浅析

    2. **使用通配符**:当路径中包含通配符(如`**/*`)时,Spring将尝试加载所有匹配的配置文件。例如: - 如果配置文件放在bin目录下的conf文件夹内,使用通配符时,上述代码将会加载bin/conf目录及其所有子目录下...

    Spring中如何加载多个配置文件.pdf

    #### 二、使用通配符加载配置文件 第二种方式是利用通配符(如“*”)来匹配并加载一组配置文件。这种方式特别适用于需要动态加载一类配置文件的场景,比如当有新的配置文件加入时,不需要修改Java代码即可自动加载...

    spring3.x的读书笔记-2

    ResourceLoader接口定义了资源加载的策略,而PathMatchingResourcePatternResolver是其一个实现,用于解析包含通配符的资源路径。 接下来,我们讨论BeanFactory和ApplicationContext。BeanFactory是Spring框架的...

    mybatis 加载配置文件的方法(两种方式)

    这个属性可以指定多个路径,可以使用通配符,例如 `classpath:mapper/*.xml`。这样,MyBatis 将根据这个路径加载对应的配置文件。 2. 使用 MapperScannerConfigurer 进行扫描 在 Spring 配置文件中,我们还可以...

    spring的学习笔记

    - **4.4 Resource通配符路径**:支持使用通配符加载一组资源,方便进行批量操作。 ### 5. **Spring Expression Language (SpEL)** SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作Bean的属性,以及执行...

    Spring3(1-7)

    - **4.4 Resource通配符路径**:展示了如何使用通配符来加载一组相关的资源。 通过这个教程,读者将能够熟练掌握Spring 3.0的核心特性和最佳实践,从而更好地在实际项目中运用Spring框架,提高开发效率和代码质量...

    跟我学Spring

    - **4.4 Resource通配符路径**:探讨了如何使用通配符在Spring中加载资源文件。 8. **Spring表达式语言(SpEL)**: - **5.1 概述**:简述了SpEL的作用和重要性,它是Spring框架中用于在运行时表达和评估表达式的...

    Spring学习总结笔记

    - **WildcardClassLoader**:通过通配符加载多个配置文件,如`classpath:applicationContext-*.xml`。 5. **依赖注入(Dependency Injection, DI)** DI是Spring的核心,它通过XML配置或注解方式来实现对象间的...

    跟我学spring3(1-7)1

    4. **4.4 Resource通配符路径**:解释了如何使用通配符来匹配和加载多个资源。 **第五章 Spring表达式语言(SpEL)** SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作对象图: 1. **5.1 概述**:简述...

    跟我学spring3(1-7)

    5. **资源管理**:Spring提供了对资源(如文件、数据库连接等)的管理,包括基础知识、内置Resource实现和访问Resource的方法,以及使用Resource通配符路径来灵活地加载资源。 6. **Spring表达式语言(SpEL)**:...

    跟我学spring3

    - **4.4 Resource通配符路径**:介绍了使用通配符进行资源查找的方法,增强了资源管理的灵活性。 5. **Spring Expression Language (SpEL)**: - **5.1 概述**:SpEL是Spring提供的强大表达式语言,用于在运行时...

    Spring3学习资料(包含书签目录)

    - **实用技巧**:分享访问资源时的一些实用技巧,比如使用通配符路径。 #### 3.4 Resource通配符路径 - **通配符介绍**:解释如何使用通配符来匹配多个资源文件。 - **实例演示**:给出使用通配符路径的具体实例。...

    spring3.x 实战资源教程

    #### 3.4 Resource通配符路径 - **通配符**:支持`*`和`**`两种通配符,分别表示匹配任意单个字符和任意多个字符。 ### 4. Spring 表达式语言 (SpEL) #### 4.1 SpEL基础 - **概念**:Spring Expression Language,...

    Spring中文帮助文档

    4.7.2. Application context构造器中资源路径的通配符 4.7.3. FileSystemResource 说明 5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到...

    Spring API

    4.7.2. Application context构造器中资源路径的通配符 4.7.3. FileSystemResource 说明 5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到...

    跟我学Spring,Spring3学习资料

    - **Resource通配符路径:** 提供了类似于Ant风格的路径模式匹配,用于访问多个资源。 ### 5. Spring表达式语言(SpEL) - **SpEL概述:** 简介了SpEL的用途以及基本语法。 - **SpEL基础与语法:** 详细解释了SpEL...

    AngularJS iframe跨域打开内容时报错误的解决办法

    当尝试在AngularJS应用中使用`ng-src`指令加载跨域`iframe`时,如果URL没有被标记为可信,就会出现“Blocked loading resource from url not allowed by $sceDelegate policy”的错误。这是因为`ng-src`会使用`$sce`...

    electron 如何将任意资源打包的方法步骤

    接着,在使用 `electron-packager` 打包时,需要添加 `--extra-resource` 参数,指向之前在 `package.json` 中定义的资源目录。例如,这里的 `--extra-resource='./extraResources'` 就是告诉打包工具将这个目录内的...

Global site tag (gtag.js) - Google Analytics