class BatchIntegrationConfiguration<I, O> implements InitializingBean {

	private final JobExplorer jobExplorer;

	private final JobRepository jobRepository;

	private final PlatformTransactionManager transactionManager;

	private RemoteChunkingManagerStepBuilderFactory remoteChunkingManagerStepBuilderFactory;

	private RemoteChunkingWorkerBuilder<I, O> remoteChunkingWorkerBuilder;

	private RemotePartitioningManagerStepBuilderFactory remotePartitioningManagerStepBuilderFactory;

	private RemotePartitioningWorkerStepBuilderFactory remotePartitioningWorkerStepBuilderFactory;

	@Autowired
	public BatchIntegrationConfiguration(JobRepository jobRepository, JobExplorer jobExplorer,
			PlatformTransactionManager transactionManager) {

		this.jobRepository = jobRepository;
		this.jobExplorer = jobExplorer;
		this.transactionManager = transactionManager;
	}

	@Bean
	public RemoteChunkingManagerStepBuilderFactory remoteChunkingManagerStepBuilderFactory() {
		return this.remoteChunkingManagerStepBuilderFactory;
	}

	@Bean
	public RemoteChunkingWorkerBuilder<I, O> remoteChunkingWorkerBuilder() {
		return remoteChunkingWorkerBuilder;
	}

	@Bean
	public RemotePartitioningManagerStepBuilderFactory remotePartitioningManagerStepBuilderFactory() {
		return this.remotePartitioningManagerStepBuilderFactory;
	}

	@Bean
	public RemotePartitioningWorkerStepBuilderFactory remotePartitioningWorkerStepBuilderFactory() {
		return this.remotePartitioningWorkerStepBuilderFactory;
	}

	@Override
	public void afterPropertiesSet() throws Exception {<FILL_FUNCTION_BODY>}

}

		this.remoteChunkingManagerStepBuilderFactory = new RemoteChunkingManagerStepBuilderFactory(this.jobRepository,
				this.transactionManager);
		this.remoteChunkingWorkerBuilder = new RemoteChunkingWorkerBuilder<>();
		this.remotePartitioningManagerStepBuilderFactory = new RemotePartitioningManagerStepBuilderFactory(
				this.jobRepository, this.jobExplorer);
		this.remotePartitioningWorkerStepBuilderFactory = new RemotePartitioningWorkerStepBuilderFactory(
				this.jobRepository, this.jobExplorer);
	
<no_super_class>