Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring批处理中动态配置作业_Java_Spring_Spring Batch_Batch Processing - Fatal编程技术网

Java 在spring批处理中动态配置作业

Java 在spring批处理中动态配置作业,java,spring,spring-batch,batch-processing,Java,Spring,Spring Batch,Batch Processing,是否可以在spring批处理中动态配置作业 这是我想做的。我创建了几个不同的ItemReader,itemreater,如下所示: <job id="MyBatchJob"> <step id="preprocessing" next="readWriteStep"> <tasklet ref="PreProcessingTasklet"/> </step> <step id="readWriteSte

是否可以在
spring批处理
中动态配置
作业

这是我想做的。我创建了几个不同的
ItemReader
itemreater
,如下所示:

<job id="MyBatchJob">
    <step id="preprocessing" next="readWriteStep">
        <tasklet ref="PreProcessingTasklet"/>
    </step>
    <step id="readWriteStep">
        <tasklet>
            <chunk reader="FlatFileItemReader" writer="DBItemWriter"/>
        </tasklet>
    </step>
</job>
  • FlatFileItemReader
  • DBItemReader
  • FlatFileItemWriter
  • DBItemWriter
  • XMLItemWriter
我希望能够在创建批处理作业时动态地混合和匹配它们。例如,假设我需要一个包含两个步骤的作业。第一步包含一个用于预处理的
Tasklet
。第二步将有一个
Tasklet
,用于使用我的读写器进行基于块的数据处理。。。。大概是这样的:

// define job parameters
JobParametersBuilder parameters = new JobParametersBuilder();

// create two steps
TaskletStep step1 = new TaskletStep(); 
TaskletStep step2 = new TaskletStep();
step1.setName("PreProcessingStep");
step2.setName("ChunkReadWriteStep");

// create two TaskLets
Tasklet tasklet1 = new PreProcessingTasklet();
Tasklet tasklet2; <------ HOW DO I ATTACH MY reader/writer IN THIS TASKLET??

// attach the TaskLet to the step
step1.setTasklet(tasklet1);
step2.setTasklet(tasklet2);

// attach the steps to the job
SimpleJob job = new SimpleJob("MyBatchJob");
job.addStep(step1);
job.addStep(step2); 

jobLauncher.run(job, parameters.toJobParameters());
//定义作业参数
JobParametersBuilder参数=新的JobParametersBuilder();
//创建两个步骤
TaskletStep step1=新建TaskletStep();
TaskletStep step2=新建TaskletStep();
步骤1.设置名称(“预处理步骤”);
步骤2.设置名称(“ChunkReadWriteStep”);
//创建两个微线程
Tasklet tasklet1=新的预处理Tasklet();

Tasklet-tasklet2 SpringBatch通过java代码而不是XML为构建作业提供了基于java的配置。通过使用提供的构建器,您可以根据需要动态构建作业。我强烈建议使用此方法,而不是手动连接
ChunkOrientedTasklet
,因为在特定的
Tasklet
中会发生很多事情


开始使用SpringBatch的java配置的最佳位置是SpringBatch指南:。使用Spring Boot和java配置等工具,对Spring批处理进行15分钟的入门演练。

ok。。。在我将注意力转移到基于Java的配置之前。。这个问题也可以通过用XML参数化读写器来解决吗?如果是,会有什么缺点吗?我认为我们不支持参数化这些字段的功能。也就是说,你需要这些有多大的动力?定义一组步骤并选择在运行时执行哪个步骤可能更有意义。很抱歉,作为一个noob,但是从XML中预定义的步骤集合中,如何附加一个适当的
步骤来在运行时执行?您可以使用决策步骤来选择在运行时执行哪个步骤。谢谢。在阅读了上面提到的SpringBatch guide示例之后,我决定现在就使用基于java的配置!