Java 使用Spring批处理执行多个处理类

Java 使用Spring批处理执行多个处理类,java,batch-processing,spring-batch,Java,Batch Processing,Spring Batch,我对spring批处理是新手。只是想得到一些建议,以便我在阅读有关SpringBatch的文章时能够相互联系 我的设想如下: 我编写了4个java类,可以在oracle中读取和修改数据。 例如:Class1和Class2将修改表1,Class3和Class4将修改表2 我们如何用spring批处理并行执行这些类?在不知道每个类的作用的情况下,我能提供的建议是有限的。也就是说,如果您只想使用Spring Batch并行执行每个类,Spring Batch提供了两个工具来帮助您: 拆分-Spring

我对spring批处理是新手。只是想得到一些建议,以便我在阅读有关SpringBatch的文章时能够相互联系

我的设想如下: 我编写了4个java类,可以在oracle中读取和修改数据。 例如:Class1和Class2将修改表1,Class3和Class4将修改表2


我们如何用spring批处理并行执行这些类?

在不知道每个类的作用的情况下,我能提供的建议是有限的。也就是说,如果您只想使用Spring Batch并行执行每个类,Spring Batch提供了两个工具来帮助您:

拆分-Spring批处理中的拆分是流程的拆分,以便可以并行执行步骤。在您的例子中,我希望两个或四个流并行执行,这取决于您是否需要按顺序执行Class1->class2,但该顺序与Class3->Class4并行,或者您是否可以并行运行所有四个类。 MethodInvokingTaskletAdapter——SpringBatch提供的这个Tasklet实现允许您在事务范围内的指定bean上执行方法。这允许您用一个Tasklet包装现有的类,以便SpringBatch可以轻松地使用它们。 有了上述概念,您可以将批处理作业配置为如下所示:

<job id="job1">
    <split id="split1">
        <flow>
            <step id="split1Step1" next="split1Step2">
                <tasklet ref="class1Tasklet"/>
            </step>
            <step id="split1Step2">
                <tasklet ref="class2Tasklet"/>
            </step>
        </flow>
        <flow>
            <step id="split2Step1" next="split2Step2">
                <tasklet ref="class3Tasklet"/>
            </step>
            <step id="split2Step2">
                <tasklet ref="class4Tasklet"/>
            </step>
        </flow>
    </split>
</job>

<bean id="class1Tasklet" class="org.springframework.batch.core.step.tasklet.MethodInvokingTaskletAdapter">
    <property name="targetObject">
        <bean class="Class1"/>
    </property>
    <property name="targetMethod" value="someMethod"/>
</bean>

<bean id="class2Tasklet" class="org.springframework.batch.core.step.tasklet.MethodInvokingTaskletAdapter">
    <property name="targetObject">
        <bean class="Class2"/>
    </property>
    <property name="targetMethod" value="someMethod"/>
</bean>

<bean id="class3Tasklet" class="org.springframework.batch.core.step.tasklet.MethodInvokingTaskletAdapter">
    <property name="targetObject">
        <bean class="Class3"/>
    </property>
    <property name="targetMethod" value="someMethod"/>
</bean>

<bean id="class4Tasklet" class="org.springframework.batch.core.step.tasklet.MethodInvokingTaskletAdapter">
    <property name="targetObject">
        <bean class="Class4"/>
    </property>
    <property name="targetMethod" value="someMethod"/>
</bean>

您可以在此处的文档中阅读有关MethodInvokingTaskletAdapter的更多信息:

假设您希望使用一个类而不是多个类。例:用启动和停止方法对汽车进行分类。步骤1为开始,步骤2为停止。使用上述方法,假设您需要在开始和停止之间传递一些数据。如何确保可重启性?