• Spring资源访问接口Resource


    该接口拥有对不同资源类型的实现类
    boolean exists() 资源是否存在
    boolean isOpen() 资源是否打开
    URL getURL() 如果底层资源可以表示成URL,则该方法返回对应的URL对象
    File getFile() 如果底层资源对应一个文件,则该方法返回对应的File对象
    InputStream getInputStream() 返回资源对应的输入流
    WritableResource: 可写资源接口,有两个实现类FileSystemResource和PathResource
    ByteArrayResource: 二进制数组标识的资源,二进制数组资源可以在内存中通过程序构造
    ClassPathResource: 类路径下的资源,资源以相对于类路径的方式标识
    FileSystemResource: 文件系统资源,资源以文件系统路径的方式表示,如D:/conf/bean.xml
    InputStreamResource: 以输入流返回表示的资源
    ServletContextResource: 以访问Web容器上下文中的资源而设计的类,负责以相对于Web应用根目录的路径加载资源。它支持以流和URL的方式访问,在WAR解包的情况下,也可以通过File方式访问。该累还可以直接从JAR包中访问资源
    UrlResource: URL封装了java.net.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源、HTTP资源、FTP资源等
    PathResource: Spring4.0提供的读取资源文件的新类。Path封装了java.net.URL、java.nio.file.Path、文件系统资源,它使用户能够访问任何可以通过URL、Path、系统文件路径表示的资源
     
    有了这个抽象的资源后,就可以将Spring的配置信息放置在任何地方,只要最终可以通过Resource接口返回配置信息即可
     
    资源加载时默认采用系统编码读取资源内容,如果想更换编码格式,可以通过EncodeResource对资源进行编码,以保证资源内容操作的正确性
    Resource res = new ClassPathResource("conf/file.txt");
    EncodeResource encRes = new EncodedResource(res,"UTF-8");
     
    资源地址表达式:
    "classpath:"只会在第一个加载的包路径下查找,而"classpath*":会扫描所有这些JAR包及路径下出现的com.smart类路径
     
    资源加载器:
    Spring定义了一套资源加载的接口,并提供了实现类
    ResourceLoader接口仅有一个getResource(String location)方法,可以根据一个资源地质加载文件资源。不过资源地址仅支持带资源类型前缀的表达式。PathMatchingResourcePatternResolver是Spring提供的标准实现类
     
    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    Resource[] resources = resourcePatternResolver.getResources("classpath*:com/wjc/ccf/**");
    Assert.notNull(resources);
    for (Resource resource : resources) {
        System.out.println(resource.getDescription());
    }
     
    *用Resource操作文件时,如果资源配置文件在项目发布时会被打包到JAR中,那么不能使用Resource.getFile()方法,应该使用getInputStream()方法
  • 相关阅读:
    列表
    Lambda表达式
    委托
    泛型(二)
    泛型(一)
    继承
    object类
    linux 命令补全包
    记一次 mysql 安装完成后启动报错 且 日志为空
    nginx 下配置https 访问提示下载文件 解决方法
  • 原文地址:https://www.cnblogs.com/gqymy/p/10450466.html
Copyright © 2020-2023  润新知