Sprint资源访问

本文详细介绍了Spring中资源的抽象接口Resource及其主要方法,包括FileSystemResource和ClassPathResource等实现类的用法。此外,还阐述了Spring的资源加载机制,包括资源地址表达式和ResourcePatternResolver接口,特别是PathMatchingResourcePatternResolver类的功能。最后,总结了Spring在资源管理和加载上的优势。
摘要由CSDN通过智能技术生成

目录

 

一、资源抽象接口

1、传统java中的资源加载

2、Spring中的Resource接口

二、资源加载

1、资源地址表达式

2、资源加载器

三、总结


一、资源抽象接口

1、传统java中的资源加载

通过ClassLoader类加载器进行的。代码如下:

Thread.currentThread().getContextClassLoader().getResource("com/demo/SimpleJava.class");
SimpleJava.class.getClassLoader().getResource("com/demo/SimpleJava.class");
ClassLoader.getSystemResource("com/demo/SimpleJava.class");
SimpleJava.class.getResource("SimpleJava.class");

每个类加载器加载资源时,都有自己固定的位置,也就是实例化类加载器时传递的url,相当于类加载器加载的资源的仓库,也只会在自己的的仓库中寻找资源,而classPath下的资源,都是AppClassLoader类进行加载。 

对于通过SimpleJava.class.getResource进行的资源加载,我们可以通过分析源码:

//这是class类中进行资源加载的方法
public java.net.URL getResource(String name) {
    name = resolveName(name); //通过解析资源名称,如果是以/开头,会在classpath下找寻,name必须为包含全限定名称的路径。
    //上面的例子中SimpleJava.class.getResource("SimpleJava.class")的路径可以换成:/com/demo/SimpleJava.class,如果不是以/开头,则会在相对于SimpleJava.class的目录下找寻。
    ClassLoader cl = getClassLoader0();
    if (cl==null) {
        return ClassLoader.getSystemResource(name);
    }
    return cl.getResource(name);
}

2、Spring中的Resource接口

传统的Java资源文件的访问通过JDK中的File、URL类难以满足各种不同需求的资源加载,这里有Spring中设计的org.springframework.core.io.Resource接口提供更加强大的访问底层资源的能力。

下面是Resource接口的主要方法:

boolean exists():资源是否存在;
boolean isOpen():资源是否打开;
URL getURL() throws IOException:如果底层资源可以表示成URL,该方法返回对应的URL对象;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值