首先,感谢关注,在我的春季批量项目中定义了许多工作,例如:
<batch:job id="helloWorldJob1" job-repository="jobRepository">
<batch:step id="step1" >
<batch:tasklet>
<batch:chunk reader="itemReader1" writer="itemWriter1"
processor="itemProcessor1">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<batch:job id="helloWorldJob2" job-repository="jobRepository">
<batch:step id="step1" >
<batch:tasklet>
<batch:chunk reader="itemReader2" writer="itemWriter2"
processor="itemProcessor2">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<batch:job id="helloWorldJob3" job-repository="jobRepository">
<batch:step id="step1" >
<batch:tasklet>
<batch:chunk reader="itemReader3" writer="itemWriter3"
processor="itemProcessor3">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
.
.
.
.
如何使用纯注释?这是正确的方法吗?
答案 0 :(得分:2)
基本上好的开始是Spring batch official documentation。这里需要注意的是,示例中有一个作业在
mvn spring-boot:run
时运行。 BatchConfiguration
是纯java配置的样子。
在我们的项目中,我们创建了这样的主要配置:
@Configuration
@EnableBatchProcessing(modular = true)
public class JobContextConfig {
@Autowired
private JobRepository jobRepository;
@Bean
public ApplicationContextFactory helloWorldJob1Job() {
return new GenericApplicationContextFactory(HelloWorldJob1JobConfig.class);
}
@Bean
public ApplicationContextFactory helloWorldJob2Job() {
return new GenericApplicationContextFactory(HelloWorldJob2JobConfig.class);
}
@Bean
public ApplicationContextFactory helloWorldJob3Job() {
return new GenericApplicationContextFactory(HelloWorldJob3JobConfig.class);
}
}
我们在每个作业的单独上下文中都有单独的配置。 HelloWorldJob1JobConfig
将从春季示例中获取该作业所需的所有内容和类BatchConfiguration
。除了触发之外,这将创建所需的一切,因此我们为每个作业创建了启动器(我们通过http启动一些作业,一些通过消息传递,一些手动启动,因此我们实际上需要以JobLauncher
的方式启动以这种方式定义的作业。)
将spring-batch
与spring-boot
与纯java配置集成的另一个好资源是spring batch boot web starter。