如何将 JAR 外部的资源加载到 MultiResourceItemReader 中?

How to load Resources that are outside of JAR into MultiResourceItemReader?

我正在尝试将 Resource[] 加载到 `MultiResourceItemReader。 运行 本地应用程序,我可以直接注入资源,因为它们包含在资源目录中。

但是,应用程序将作为 jar 部署到服务器,此时资源(平面文件)将位于 jar 之外。我在使用 PathMatchingResourcePatternResolver 时遇到问题 -- 我一直收到 "No resources found" 错误。

MultiResourceItemReader 可以从 jar 外部路径读取。只需尝试提供资源的绝对路径。

假设您在 /data/inputs/csv/ 目录中有输入文件 example*.csv,然后在 application.properties 文件中你可以有

 input.files.location=/data/inputs/csv/
 input.file.pattern=example*.csv

然后在MultiResourceItemReader配置中,你可以给出如下,

@Value("file:${input.files.location}${input.file.pattern}")
private Resource[] inputResources; //thus inputResources will have files matching pattern example*.csv in folder 

@Bean
public MultiResourceItemReader<T> multiResourceItemReader() 
{
    MultiResourceItemReader<T> resourceItemReader = new MultiResourceItemReader<T>();
    resourceItemReader.setResources(inputResources);
    resourceItemReader.setDelegate(reader());
    return resourceItemReader;
}