我正在使用spring MVC。从我的控制器中,我调用jobLauncher
,在jobLauncher
中,我传递如下所示的作业参数,并使用注解来启用如下配置:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
// read, write ,process and invoke job
}
JobParameters jobParameters = new JobParametersBuilder().addString("fileName", "xxxx.txt").toJobParameters();
stasrtjob = jobLauncher.run(job, jobParameters);
and here is my itemprocessor
public class DataItemProcessor implements ItemProcessor<InputData, OutPutData> {
public OutPutData process(final InputData inputData) throws Exception {
// i want to get job Parameters here ????
}
}
3条答案
按热度按时间h5qlskok1#
1)在数据处理器上添加范围注解,即
2)在数据处理器中创建一个类示例,并使用值注解注入作业参数值:
最终的数据处理器类如下所示:
如果您的数据处理器未初始化为Bean,请在其上放置@Component注解:
bejyjqdl2#
在我看来,避免使用Spring的hacky表达式语言(SpEL)的一个更好的解决方案是使用
@BeforeStep
将StepExecution
上下文自动连接到处理器中。在您的处理器中,添加以下内容:
@BeforeStep
注解标记要在执行
Step
之前呼叫的方法,这是在建立并保存StepExecution
之后,但在读取第一个项目之前。vlju58qv3#
我已经在进程本身中编写了,而不是使用lambda表达式创建单独的文件。