【发布时间】:2015-04-18 10:25:47
【问题描述】:
我正在尝试从控制器运行我的批处理作业。它将由 cron 作业或通过访问特定链接来启动。 我使用的是 Spring Boot,没有 XML 只是注释。
在我当前的设置中,我有一个包含以下 bean 的服务:
@EnableBatchProcessing
@PersistenceContext
public class batchService {
@Bean
public ItemReader<Somemodel> reader() {
...
}
@Bean
public ItemProcessor<Somemodel, Somemodel> processor() {
return new SomemodelProcessor();
}
@Bean
public ItemWriter writer() {
return new CustomItemWriter();
}
@Bean
public Job importUserJob(JobBuilderFactory jobs, Step step1) {
return jobs.get("importUserJob")
.incrementer(new RunIdIncrementer())
.flow(step1)
.end()
.build();
}
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory,
ItemReader<somemodel> reader,
ItemWriter<somemodel> writer,
ItemProcessor<somemodel, somemodel> processor) {
return stepBuilderFactory.get("step1")
.<somemodel, somemodel> chunk(100)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}
只要我将@Configuration 注释放在我的batchService 类的顶部,作业就会在我运行应用程序后立即开始。它成功地完成了,一切都很好。现在我正在尝试删除 @Configuration 注释并在需要时运行它。有没有办法从控制器触发它?
谢谢!
【问题讨论】:
-
这是一个关于同一主题的不错的教程 - javainuse.com/spring/bootbatch
标签: spring spring-mvc spring-boot spring-batch