Package org.springframework.batch.integration.config.annotation

# Annotation Interface EnableBatchIntegration

@Target(TYPE) @Retention(RUNTIME) @Documented @EnableIntegration @Import(BatchIntegrationConfiguration.class) public @interface EnableBatchIntegration
Enable Spring Batch Integration features and provide a base configuration for setting up remote chunking or partitioning infrastructure beans. By adding this annotation on a `Configuration` class, it will be possible to autowire the following beans:

- `RemoteChunkingManagerStepBuilderFactory`: used to create a manager step of a remote chunking setup by automatically setting the job repository and transaction manager.
- `RemoteChunkingWorkerBuilder`: used to create the integration flow on the worker side of a remote chunking setup.
- `RemotePartitioningManagerStepBuilderFactory`: used to create a manager step of a remote partitioning setup by automatically setting the job repository, job explorer, bean factory and transaction manager.
- `RemotePartitioningWorkerStepBuilderFactory`: used to create a worker step of a remote partitioning setup by automatically setting the job repository, job explorer, bean factory and transaction manager.

For remote chunking, an example of a configuration class would be:

     @Configuration
     @EnableBatchIntegration
     @EnableBatchProcessing
     public class RemoteChunkingAppConfig {

            @Autowired
            private RemoteChunkingManagerStepBuilderFactory managerStepBuilderFactory;

            @Autowired
            private RemoteChunkingWorkerBuilder workerBuilder;

            @Bean
            public TaskletStep managerStep() {
             return this.managerStepBuilderFactory
                    .get("managerStep")
                    .chunk(100)
                    .reader(itemReader())
                    .outputChannel(outgoingRequestsToWorkers())
                    .inputChannel(incomingRepliesFromWorkers())
                    .build();
            }

            @Bean
            public IntegrationFlow worker() {
             return this.workerBuilder
                    .itemProcessor(itemProcessor())
                    .itemWriter(itemWriter())
                    .inputChannel(incomingRequestsFromManager())
                    .outputChannel(outgoingRepliesToManager())
                    .build();
            }

            // Middleware beans omitted

     }

For remote partitioning, an example of a configuration class would be:

     @Configuration
     @EnableBatchIntegration
     @EnableBatchProcessing
     public class RemotePartitioningAppConfig {

            @Autowired
            private RemotePartitioningManagerStepBuilderFactory managerStepBuilderFactory;

            @Autowired
            private RemotePartitioningWorkerStepBuilderFactory workerStepBuilderFactory;

            @Bean
            public Step managerStep() {
             return this.managerStepBuilderFactory
                    .get("managerStep")
                    .partitioner("workerStep", partitioner())
                    .gridSize(10)
                    .outputChannel(outgoingRequestsToWorkers())
                    .inputChannel(incomingRepliesFromWorkers())
                    .build();
            }

            @Bean
            public Step workerStep() {
             return this.workerStepBuilderFactory
                    .get("workerStep")
                    .inputChannel(incomingRequestsFromManager())
                    .outputChannel(outgoingRepliesToManager())
                    .chunk(100)
                    .reader(itemReader())
                    .processor(itemProcessor())
                    .writer(itemWriter())
                    .build();
            }

            // Middleware beans omitted

     }

Since:
  4.1
Author:
  Mahmoud Ben Hassine