有两个工作参数filePath&我的spring批处理作业的fileName。要求是将此filePath + fileName作为属性值传递给其他自定义bean。但是,我不能" step" bean访问这些参数的范围。因此,我需要一种方法从(非步骤)普通bean访问这些作业参数。请参考代码::
<bean id="cardDownloadFileTemplate"
class="org.springframework.integration.file.remote.RemoteFileTemplate">
<constructor-arg ref="sftpSessionFactory" />
<property name="fileNameExpression">
<bean class="org.springframework.expression.common.LiteralExpression">
<constructor-arg
value="#{jobParameters['filePath']}#{jobParameters['fileName']}}" />
</bean>
</property>
<property name="charset" value="${fserver.charset}" />
</bean>
答案 0 :(得分:1)
无法完成;对于正常范围的bean(单例,原型),在启动作业之前,使用上下文初始化bean;没有jobParameters
变量可用。
答案 1 :(得分:0)
您可以将普通bean设置为Step Listeners,然后实现@BeforeStep方法,该方法可以从步骤执行中提取JobParameters。
在这种情况下,您提取的参数的值在bean初始化时将不可用,但可以在步骤开始运行之前使用。
使用当前作用域中的StepExecution初始化侦听器的状态 beforeStep(StepExecution stepExecution) stepExecution - &gt; getJobParameters()