• Spring 中读取文件-ResourceLoaderAware


    Spring 中读取文件-ResourceLoaderAware

    概述

    • Spring ResourceLoader为我们提供了一个统一的getResource()方法来通过资源路径检索外部资源。从而将资源或文件(例如文本文件、XML文件、属性文件或图像文件)加载到Spring应用程序上下文中的不同实现

    资源(Resource)接口

    • Resource是Spring中用于表示外部资源的通用接口。
    • Spring为Resource接口提供了以下6种实现。
    • UrlResource
    • ClassPathResource
    • FileSystemResource
    • ServletContextResource
    • InputStreamResource
    • ByteArrayResource
    • 我们可以指定不同的前缀来创建路径以从不同位置加载资源

    ResourceLoader

    • getResource()方法将根据资源路径决定要实例化的Resource实现。 要获取ResourceLoader的引用,请实现ResourceLoaderAware接口。
    Resource banner = resourceLoader.getResource("file:c:/temp/filesystemdata.txt");
    

    ApplicationContext加载资源

    • 在Spring中,所有应用程序上下文都实现ResourceLoader接口。因此,所有应用程序上下文都可用于获取资源实例。
    • 要获取ApplicationContext的引用,请实现ApplicationContextAware接口。
    Resource banner = ctx.getResource("file:c:/temp/filesystemdata.txt");
    

    在springboot中使用示例

    @Component
    public class CustomResourceLoader implements ResourceLoaderAware {
        @Autowired
        private ResourceLoader resourceLoader;
    
    
        public void showResourceData() throws IOException
        {
            //This line will be changed for all versions of other examples
            Resource banner = resourceLoader.getResource("file:E:\refreshlog\log1.txt");
    
            InputStream in = banner.getInputStream();
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    
            while (true) {
                String line = reader.readLine();
                if (line == null) {
                    break;
                }
                System.out.println(line);
            }
            reader.close();
        }
    
        @Override
        public void setResourceLoader(ResourceLoader resourceLoader) {
            try {
                showResourceData();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    参考

    • Spring ResourceLoaderAware – Read file in Spring
  • 相关阅读:
    Java NIO -- 通道 Channel
    【RF库Collections测试】Convert To List
    【RF库Collections测试】Create Dictionary
    【RF库Collections测试】combine lists
    【RF库Collections库测试】关键字append to list
    【RF库测试】关键字get time
    【RF库测试】DateTime库
    linux 统计命令执行后的行数或者统计目录下文件数目
    grep 同时满足多个关键字和满足任意关键字
    【python】一次执行多个linux命令
  • 原文地址:https://www.cnblogs.com/frankltf/p/11736830.html
Copyright © 2020-2023  润新知