Java Reference
In-Depth Information
item.setInventoryValidated(false);
}
return item;
}
}
Now that the business processing is written, let's configure these two services to run in parallel. To
do that, as mentioned earlier, you use Spring Batch's split tag along with the SimpleAsyncTaskExecutor
provided with Spring to handle thread management. Listing 11-16 shows the configuration for the steps
you run in parallel.
Listing 11-16. Configuration of Parallel Steps
<beans:bean id="taskExecutor"
class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
<beans:bean id="orderItemReader"
class="org.springframework.batch.item.database.HibernateCursorItemReader"
scope="step">
<beans:property name="sessionFactory" ref="sessionFactory"/>
<beans:property name="queryString" value="from OrderItem where inventoryValidated is null"/>
</beans:bean>
<beans:bean id="orderReader"
class="org.springframework.batch.item.database.HibernateCursorItemReader"
scope="step">
<beans:property name="sessionFactory" ref="sessionFactory"/>
<beans:property name="queryString" value="from Order where creditValidated is null"/>
</beans:bean>
<beans:bean id="orderWriter"
class="org.springframework.batch.item.database.HibernateItemWriter">
<beans:property name="sessionFactory" ref="sessionFactory"/>
</beans:bean>
<beans:bean id="creditService"
class="com.apress.springbatch.chapter11.service.impl.CreditServiceImpl"/>
<beans:bean id="creditVerificationProcessor"
class="org.springframework.batch.item.adapter.ItemProcessorAdapter">
<beans:property name="targetObject" ref="creditService"/>
<beans:property name="targetMethod" value="validateCharge"/>
</beans:bean>
<beans:bean id="inventoryService"
class="com.apress.springbatch.chapter11.service.impl.InventoryServiceImpl"/>
<beans:bean id="inventoryVerificationProcessor"
class="org.springframework.batch.item.adapter.ItemProcessorAdapter">
<beans:property name="targetObject" ref="inventoryService"/>
 
Search WWH ::




Custom Search