gpt4 book ai didi

spring-batch - 如何使用spring-boot在spring批处理中设置JobParameters

转载 作者:行者123 更新时间:2023-12-03 14:45:37 27 4
gpt4 key购买 nike

我按照 http://spring.io/guides/gs/batch-processing/ 的指南进行操作但它描述了一个没有可配置参数的工作。我正在使用 Maven 来构建我的项目。

我正在移植我在 XML 中定义的现有作业,并希望通过命令传入 jobParameters。

我尝试了以下方法:

@Configuration
@EnableBatchProcessing
public class MyBatchConfiguration {

// other beans ommited

@Bean
public Resource destFile(@Value("#{jobParameters[dest]}") String dest) {
return new FileSystemResource(dest);
}

}

然后我使用以下命令编译我的项目:
mvn clean package

然后我尝试像这样启动程序:
java my-jarfile.jar dest=/tmp/foo

我得到一个异常(exception)说:
[...]
Caused by: org.springframework.expression.spel.SpelEvaluationException:
EL1008E:(pos 0): Field or property 'jobParameters' cannot be found on object of
type 'org.springframework.beans.factory.config.BeanExpressionContext'

谢谢 !

最佳答案

从命令行解析作业参数,然后创建并填充 JobParameters。

public JobParameters getJobParameters() {
JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
jobParametersBuilder.addString("dest", <dest_from_cmd_line);
jobParametersBuilder.addDate("date", <date_from_cmd_line>);
return jobParametersBuilder.toJobParameters();
}

通过 JobLauncher 将它们传递给您的工作 -
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
JobExecution jobExecution = jobLauncher.run(job, jobParameters);

现在您可以使用以下代码访问它们 -
@Bean 
@StepScope
public Resource destFile(@Value("#{jobParameters[dest]}") String dest) {
return new FileSystemResource(dest);
}

或者在配置 Spring Batch Job 工件的 @Configuration 类中,如 ItemReader、ItemWriter 等......
@Bean
@StepScope
public JdbcCursorItemReader<MyPojo> reader(@Value("#{jobParameters}") Map jobParameters) {
return new MyReaderHelper.getReader(jobParameters);
}

关于spring-batch - 如何使用spring-boot在spring批处理中设置JobParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com