@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
我得到一个例外说:
[...]
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'
谢谢!
从命令行解析作业参数,然后创建和填充作业参数。
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);
}
@Bean
@StepScope
public JdbcCursorItemReader<MyPojo> reader(@Value("#{jobParameters}") Map jobParameters) {
return new MyReaderHelper.getReader(jobParameters);
}
我是新的Spring批与引导。我在使用postgres配置jobRepositoryFactory bean作为数据库时遇到了一个问题。下面是我的配置类。 下面是Spring boot App run的输出 我已经在我的configuration类中配置了bean。我错过了什么?
IM使用Spring Batch和JavaConfig(无XML)开发项目。我正在使用一个自动生成的作业BuilderFactory创建作业。 是否可以全局设置工厂的递增器? 返回jobBuilderFactory.get("jobName")。 很抱歉,如果这是一个转储问题,但我是SpringBatch新手,没有找到有效的解决方案。
从现在起,我只知道必须使用一个令牌来标识每个页眉、细节和页脚的位置,但我发现的关于Spring批处理的所有内容都没有说明如何从API请求开始处理。
我正在尝试使用StoredProcedureItemReader for Cursor读取spring批处理中的一个DB2存储过程。sql字符串未被执行,默认sql被传递给jdbctemplate 我正在使用由作业调用的批处理步骤: 为什么我没有得到结果集或者无法执行查询。我是个新手,有点卡住了。调试显示,数据源配置正确。 谢谢!
问题内容: 运行main方法时,将执行作业。这样我无法弄清楚如何控制作业的执行。例如,您如何安排作业,访问作业执行或设置作业参数的方式。 我试图注册自己的JobLauncher 但是当我尝试在主要方法中使用它时: 当加载上下文时,该作业再次执行,而当我尝试手动运行它时,我得到了。有没有办法防止自动作业执行? 问题答案: 通过设置可以防止作业执行 在application.properties中。或
我按照这个示例使用Boot进行Spring批处理。 运行main方法时,作业将执行。这样我就不知道如何控制作业的执行了。例如如何排定作业、访问作业执行或设置作业参数。 我尝试注册自己的JobLauncher 但当我尝试在主法中使用时: 当加载上下文时,再次执行作业,并且尝试手动运行作业时得到。有没有办法防止自动执行作业?