如何最好地使用 spring 批注或 xml 文件?
how to best approach to use spring batch annotation or xml files ?
首先感谢关注,在我的spring批处理项目中定义了很多作业,例如:
<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>
.
.
.
.
如何使用纯注解?这是正确的做法吗?
基本上好的开始是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
将包含该工作所需的所有内容,而 class 看起来像 spring 示例中的 BatchConfiguration
。这将创建除触发之外所需的一切,因此我们为每个作业创建了启动器(我们通过 http 启动一些作业,一些通过消息传递,一些手动启动,因此我们实际上需要启动以这种方式定义的作业 JobLauncher
)。
将 spring-batch
与 spring-boot
与纯 java 配置集成的另一个好资源是 spring batch boot web starter.
首先感谢关注,在我的spring批处理项目中定义了很多作业,例如:
<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>
.
.
.
.
如何使用纯注解?这是正确的做法吗?
基本上好的开始是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
将包含该工作所需的所有内容,而 class 看起来像 spring 示例中的 BatchConfiguration
。这将创建除触发之外所需的一切,因此我们为每个作业创建了启动器(我们通过 http 启动一些作业,一些通过消息传递,一些手动启动,因此我们实际上需要启动以这种方式定义的作业 JobLauncher
)。
将 spring-batch
与 spring-boot
与纯 java 配置集成的另一个好资源是 spring batch boot web starter.