0
我是Spring批处理的新手。只是想要一些建议,以便我可以在阅读春季批次时连接。使用Spring批处理执行多个处理类
我的场景如下: 我写了4个java类,它们会读取和修改oracle中的数据。例如:Class1和Class2将修改表1,Class3和Class4将修改表2
如何使用弹簧批处理来并行执行那些类?
我是Spring批处理的新手。只是想要一些建议,以便我可以在阅读春季批次时连接。使用Spring批处理执行多个处理类
我的场景如下: 我写了4个java类,它们会读取和修改oracle中的数据。例如:Class1和Class2将修改表1,Class3和Class4将修改表2
如何使用弹簧批处理来并行执行那些类?
不知道每个班级都做了什么,我可以提供的建议有多好。话虽这么说,如果你想要做的是使用Spring Batch的并行执行的每个类,Spring Batch的提供了一些工具来帮助这样的:
MethodInvokingTaskletAdapter
- Spring Batch提供的这个Tasklet
实现允许您在事务范围内的指定bean上执行一个方法。这使您可以用Tasklet
包装现有的类,以便Spring Batch可以轻松使用它们。有了上述概念,你可以配置你的批处理作业看起来像下面这样:
<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
:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/step/tasklet/MethodInvokingTaskletAdapter.html
让我们说你想要使用一个类而不是多个类。例如:类'Car'的方法是'start()'和'stop()'。步骤1是'start()',步骤2是'stop()'。使用上面的方法,假设您需要在启动和停止之间传递一些数据。这将如何完成以确保可重新启动是可能的? – 2016-11-09 19:34:10