如何最好地使用 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-batchspring-boot 与纯 java 配置集成的另一个好资源是 spring batch boot web starter.