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