Java 从spring批处理中的映射器访问作业参数
我正在尝试从映射程序文件访问作业参数。以下是我的xml代码的一部分:Java 从spring批处理中的映射器访问作业参数,java,xml,parameters,spring-batch,mapper,Java,Xml,Parameters,Spring Batch,Mapper,我正在尝试从映射程序文件访问作业参数。以下是我的xml代码的一部分: <!-- job --> <job id="processEFTFileJob" restartable="true" > <step id="step1"> <tasklet> <chunk reader="sDItemReader" writer="sDItemWriter" processor="sDItemProce
<!-- job -->
<job id="processEFTFileJob" restartable="true" >
<step id="step1">
<tasklet>
<chunk reader="sDItemReader" writer="sDItemWriter" processor="sDItemProcessor" commit-interval="1" />
</tasklet>
</step>
<validator ref="sDJobParametersValidator"></validator>
<listeners>
<listener ref="jobFailureListener"/>
</listeners>
</job>
<!-- job parameter -->
<beans:bean id="sDJobParametersValidator" class="com.cv.cib.common.gfmas.aob.s.d.SDJobParametersValidator">
<beans:property name="fileParameterName" value="${filetojob.fileParameterName}"/>
</beans:bean>
<beans:bean id="sDItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<beans:property name="resource" value="file:#{jobParameters['input.file.name']}" />
<beans:property name="lineMapper" ref="sDLineMapper" />
</beans:bean>
<beans:bean id="sDLineMapper" class="org.springframework.batch.item.file.mapping.PatternMatchingCompositeLineMapper">
<beans:property name="tokenizers">
<beans:map>
<beans:entry key="01*" value-ref="header" />
<beans:entry key="02*" value-ref="details" />
</beans:map>
</beans:property>
<beans:property name="fieldSetMappers">
<beans:map>
<beans:entry key="01*" value-ref="sDHeaderLineMapper" />
<beans:entry key="02*" value-ref="sDDetailsLineMapper" />
</beans:map>
</beans:property>
</beans:bean>
<!-- point to mapper java file respectively -->
<beans:bean id="sDHeaderLineMapper" class="com.cv.cib.common.gfmas.aob.s.d.SDHeaderFieldSetMapper" />
<beans:bean id="sDDetailsLineMapper" class="com.cv.cib.common.gfmas.aob.s.d.SDDetailsFieldSetMapper" />
要获取作业参数,需要将其注入步骤范围的bean中。您已经在使用
sDItemReader
执行此操作。要在映射器中获取它,请添加一个setter,比如说setFileName(String name)
,然后按如下方式配置映射器:
<beans:bean id="sDHeaderLineMapper" class="com.cv.cib.common.gfmas.aob.s.d.SDHeaderFieldSetMapper" scope="step">
<beans:property name="fileName" value="#{jobParameters['input.file.name']}"/>
</beans:bean>
<beans:bean id="sDHeaderLineMapper" class="com.cv.cib.common.gfmas.aob.s.d.SDHeaderFieldSetMapper" scope="step">
<beans:property name="fileName" value="#{jobParameters['input.file.name']}"/>
</beans:bean>