0
我正在嘗試構建一個Spring Batch作業,其中用戶將路徑作爲輸入提供給目錄。在這個目錄中是一個csv文件,這個文件的名字總是不同的。我定義我ItemReader
與此Java配置:我可以在@Value註釋的資源中使用佔位符嗎?
@Bean
@StepScope
public FlatFileItemReader<MyObject> itemReader(
@Value("file:#{jobParameters['directory']}/*.csv") final Resource resource,
final DefaultLineMapper<MyObject> lineMapper) {
final FlatFileItemReader<MyObject> reader = new FlatFileItemReader<>();
reader.setResource(resource);
reader.setLinesToSkip(1);
reader.setLineMapper(lineMapper);
return reader;
}
當我跑我得到以下錯誤的工作:
Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): URL [file:C:/path/to/directory/*.csv]
at org.springframework.batch.item.file.FlatFileItemReader.doOpen(FlatFileItemReader.java:251)
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:144)
... 26 more
顯然,這是不可能在這個地方用星號作爲佔位符。有沒有其他方式動態獲取csv文件的路徑?
的'FlatFileItemReader'需要一個實際的文件不是一個目錄或通配符。 'FlatFileItemReader'也拋出異常。在那裏放置一些邏輯,從給定的目錄中獲取文件的名稱。 –
你在那裏的意思是什麼? – stevecross
在你的'@ Bean'方法中。 –