Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从spring批处理中的映射器访问作业参数_Java_Xml_Parameters_Spring Batch_Mapper - Fatal编程技术网

Java 从spring批处理中的映射器访问作业参数

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

我正在尝试从映射程序文件访问作业参数。以下是我的xml代码的一部分:

<!-- 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>