我正在使用 CommandLineJobRunner 执行春季批处理作业。我想传入一组参数,但遇到了一些问题。这是我的步骤:
<bean id="loadTAReportsJob" class="org.springframework.batch.core.job.SimpleJob">
<property name="steps">
<bean id="loadStep" parent="simpleStep">
<property name="itemReader">
<bean id="reader" class="com.xyz.reporting.TAReportItemReader">
<property name="parm1" value="#{jobParameters['input.file']}" />
<property name="parm2" value="#{jobExecutionContext['input.file']}" />
<property name="parm3" value="#{stepExecutionContext['input.file']}" />
</bean>
</property>
<property name="itemWriter">
<bean id="writer" class="com.xyz.reporting.TAReportItemWriter">
<property name="reportDomainFacade" ref="reportDomainFacade"/>
</bean>
</property>
</bean>
</property>
<property name="jobRepository" ref="jobRepository"/>
</bean>
CommandLineJobRunner 报告:
2407 [P=717580:O=0:CT] INFO support.SimpleJobLauncher - Job: [SimpleJob: [name=loadTAReportsJob]] launched with the following parameters: [{input.file=somefile.zip}{}{}{}]
但在我的 ReportItemReader 中,三个参数都解析为完整值:
#{jobParameters['input.file']}
#{jobExecutionContext['input.file']}
#{stepExecutionContext['input.file']}
也就是说,春季批处理似乎没有解决#{JobXYZ ['parm name']。
我是否必须做一些特别的事情才能让 spring 解析该语法并进行属性查找?我是否需要连接一个 JobParameters 对象或其他东西才能使这个东西工作?
顺便说一句 - 我正在使用 Spring Batch 1.1.4 来保持与 java 1.4.2 的兼容。