我知道我问的问题可能会在这里问过。但即使在提到这些答案之后我的问题还没有解决。所以我再次发布它
我需要读取ItemProcessor中当前正在处理的资源的名称。为此,我尝试使用 ResourceAware 标记接口,它具有我们需要实现的setResource方法。根据我的阅读,如果我们使用MultiResourceItemReader,则应调用ResourceAware的setResourceMethod,这样我们就可以获得对当前处理项目的引用。但出于某种原因,这种情况并没有发生。请找到我的以下配置
<step id="readChatLogsData">
<tasklet>
<chunk reader="multiResourceReader" processor="chatProcessor" writer="mongodbItemWriter" commit-interval="100">
</chunk>
</tasklet>
</step>
<beans:bean id="multiResourceReader" class="org.springframework.batch.item.file.MultiResourceItemReader" scope="step">
<beans:property name="resources" value="file:*.log" />
<beans:property name="delegate" ref="chatReader" />
</beans:bean>
<beans:bean id="chatReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<beans:property name="lineMapper" ref="tickerLineMapper" />
</beans:bean>
<beans:bean id="tickerLineMapper"
class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<beans:property name="fieldSetMapper" ref="chatMapper" />
<beans:property name="lineTokenizer" ref="tickerLineTokenizer" />
</beans:bean>
<beans:bean id="tickerLineTokenizer"
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<beans:property name="delimiter" value="^A" />
<beans:property name="names" value="A,B,C" />
</beans:bean>
public class ChatProcessor implements ItemProcessor<SingleChatFileInput,String>, ResourceAware
如果我在这里做错了或者我错过了任何事情,请告诉我。 如果有任何其他方法可以实现这一点,请建议。
答案 0 :(得分:1)
标记界面,指示项目应具有Spring 读取它的资源,设置在它上面。
ResourceAware
接口应该由chatReader
(我认为是SingleChatFileInput
)而不是ItemProcessor
返回的对象实现。