美文网首页
spring资源加载

spring资源加载

作者: 醉里梦乡 | 来源:发表于2018-09-15 15:43 被阅读0次

文章内容来自本人学习《精通Spring 4.x 企业应用开发实战》一书的笔记整理,部分内容摘抄原文。

为了访问不同类型的资源,需要使用不同的Resource实现类,比较麻烦,可以在不显式使用具体Resource实现类的情况下,通过资源地址的特殊标识(如“classpath:”、“file:”)就可以访问到资源。

资源地址表达式

地址前缀: classpath:
示例:classpath:com/hqq/bean.xml
对应的资源类型:从类路径中加载资源,可以在文件系统 中,也 可以在JAR或ZIP的类包中。

地址前缀:file:
示例:file:/com/hqq/bean.xml
对应的资源类型:使用UrlResource从文件系统中加载资源,可采用绝对或相对路径。

地址前缀:http://
示例:http://www.hqq.com/bean.xml
对应的资源类型:使用UrlResource从web服务器中加载资源。

地址前缀:ftp://
示例:file://www.hqq.com/bean.xml
对应的资源类型:使用UrlResource从FTP服务器中加载资源。

地址前缀:没有前缀
示例:com/hqq/bean.xml
对应的资源类型:根据ApplicationContext的具体实现采用对应类型的Resource来加载

“classpath:”与“classpath*:”的区别:

如果有多个JAR包或文件系统类路径都有相同的包名(如 com.hqq),“classpath:”只会在第一个加载的com.hqq包的类路径下查找资源。而“classpath*:”会扫描所有这些JAR包及类路径下出现的com.hqq类路径。

Ant风格的资源地址支持3种匹配符:

  • ?:匹配文件名中一个字符。如 classpath:com/h?q/bean.xml

  • *:匹配文件名中的任意字符。如 classpath:com/hqq/*.xml

  • **:匹配多层路径。如 classpath:com/*/.xml

资源加载器

image

ResourceLoad接口仅有一个getResource(String location)方法,可以根据一个资源地址加载文件资源,只支持带资源类型前缀的表达式,不支持Ant风格的资源表达式。ResourcePatternResolver接口扩展了ResourceLoader接口,支持Ant风格表达式。PathMatchingResourcePatternResolver是spring提供的标准实现类。

资源加载DEMO

package com.hqq.spring.resourceload;

import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.IOException;

/**
 * 测试spring资源加载DEMO
 * Created by HUANGQIQIN on 2018/9/15.
 */
public class TestSpringResourceLoad {

    public static void main(String[] args) {
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            //加载所有类包com.hqq下的xml文件
            Resource[] resources = resolver.getResources("classpath*:com/hqq/**/*.xml");
            for (Resource resource : resources){
                System.out.println(resource.getDescription());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:
file [F:\ideawork\hqqstudy\springstudy\target\classes\com\hqq\spring\resourceload\application-spring.xml]

相关文章

网友评论

      本文标题:spring资源加载

      本文链接:https://www.haomeiwen.com/subject/mrftnftx.html