在Spring批处理中传递多个参数

时间:2017-11-06 09:37:08

标签: java spring spring-mvc spring-batch

如何在Spring Batch中传递多个参数?

示例我有一个文件名ABCYYMMDD00.txt。 YYMMDD代表当前日期并从主类传递,ABC是固定的,00也从主类传递。

 <bean id="detailReader" class="com.rh.app.ReadFile" scope="step">
        <constructor-arg name="fileName" value="/home/xxx/IFD+#{jobParameters['stmtDate']}+#{jobParameters['No']}.txt"/>
    </bean>

但这对我来说不对。

2 个答案:

答案 0 :(得分:0)

我们使用以下方法将多个参数传递给作业

private JobParameters buildJobParameters(String date,String wfId){
   return new JobParametersBuilder().addString("wfId", workflowId).
                        addDate("rundate", runDate);
}

JobParameters jobParameters = buildJobParameters(date,wfId);
JobExecution execution = jobLauncher.run(job,jobParameters);

因此,在您的情况下可以轻松实现。

private JobParameters buildJobParameters(String stmtDate,String no){
       return new JobParametersBuilder().addString("stmtDate", stmtdate).
                            addDate("No", no);
    }

答案 1 :(得分:0)

JobParameters构造函数将JobParameter的映射作为输入。您可以传递任意数量的参数。

以下是示例代码

 Map<String, JobParameter> map = new HashMap<String, JobParameter>();
           JobParameter myParameter = new JobParameter(parameter1);
           map.put("key1", myParameter);
           JobParameter myParameter = new JobParameter(parameter2);
           map.put("key2", myParameter2);
           JobParameter myParameter = new JobParameter(parameter3);
           map.put("key3", myParameter3);
           JobParameters jobParameters = new JobParameters(map);