如何将JobParams传递给xml中的其他bean?

时间:2015-10-22 12:32:03

标签: spring spring-batch spring-el

有两个工作参数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>

2 个答案:

答案 0 :(得分:1)

无法完成;对于正常范围的bean(单例,原型),在启动作业之前,使用上下文初始化bean;没有jobParameters变量可用。

答案 1 :(得分:0)

您可以将普通bean设置为Step Listeners,然后实现@BeforeStep方法,该方法可以从步骤执行中提取JobParameters。

在这种情况下,您提取的参数的值在bean初始化时将不可用,但可以在步骤开始运行之前使用。

使用当前作用域中的StepExecution初始化侦听器的状态 beforeStep(StepExecution stepExecution) stepExecution - &gt; getJobParameters()