Phi*_*ppe 15 spring-batch spring-el spring-boot
我按照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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下方法编译项目:
mvn clean package
Run Code Online (Sandbox Code Playgroud)
然后我尝试启动这样的程序:
java my-jarfile.jar dest=/tmp/foo
Run Code Online (Sandbox Code Playgroud)
我得到一个例外说:
[...]
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'
Run Code Online (Sandbox Code Playgroud)
谢谢 !
Ash*_*hok 15
从命令行解析作业参数,然后创建并填充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();
}
Run Code Online (Sandbox Code Playgroud)
通过JobLauncher将它们传递给您的工作 -
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
JobExecution jobExecution = jobLauncher.run(job, jobParameters);
Run Code Online (Sandbox Code Playgroud)
现在您可以使用以下代码访问它们 -
@Bean
@StepScope
public Resource destFile(@Value("#{jobParameters[dest]}") String dest) {
return new FileSystemResource(dest);
}
Run Code Online (Sandbox Code Playgroud)
或者在配置Spring Batch Job工件的@Configuration类中,如ItemReader,ItemWriter等......
@Bean
@StepScope
public JdbcCursorItemReader<MyPojo> reader(@Value("#{jobParameters}") Map jobParameters) {
return new MyReaderHelper.getReader(jobParameters);
}
Run Code Online (Sandbox Code Playgroud)
我设法通过简单地注释我的bean来实现这个工作,如下所示:
@Bean
@StepScope
public Resource destFile(@Value("#{jobParameters[dest]}") String dest) {
return new FileSystemResource(dest);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23717 次 |
| 最近记录: |