Add XML support for partition step in samples

This commit is contained in:
dsyer
2009-12-13 15:21:20 +00:00
parent 7bd60503c5
commit 5bfd4addca
2 changed files with 51 additions and 120 deletions

View File

@@ -1,115 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<job id="partitionJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step" parent="step1:master" />
<step id="step">
<partition step="step1" partitioner="partitioner">
<handler grid-size="2" task-executor="taskExecutor" />
</partition>
</step>
</job>
<bean name="step1:master"
class="org.springframework.batch.core.partition.support.PartitionStep">
<property name="jobRepository" ref="jobRepository" />
<property name="stepExecutionSplitter">
<bean
class="org.springframework.batch.core.partition.support.SimpleStepExecutionSplitter">
<property name="jobRepository" ref="jobRepository" />
<property name="stepName" value="step1" />
<property name="partitioner">
<bean
class="org.springframework.batch.core.partition.support.MultiResourcePartitioner">
<property name="resources"
value="classpath:data/iosample/input/delimited*.csv" />
</bean>
</property>
</bean>
</property>
<property name="partitionHandler">
<bean
class="org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler">
<property name="taskExecutor">
<bean class="org.springframework.core.task.SyncTaskExecutor" />
</property>
<property name="step" ref="step1" />
<property name="gridSize" value="2" />
</bean>
</property>
<bean id="partitioner" class="org.springframework.batch.core.partition.support.MultiResourcePartitioner">
<property name="resources" value="classpath:data/iosample/input/delimited*.csv" />
</bean>
<bean id="taskExecutor" class="org.springframework.core.task.SyncTaskExecutor" />
<step id="step1" xmlns="http://www.springframework.org/schema/batch">
<tasklet transaction-manager="transactionManager">
<chunk writer="itemWriter" reader="itemReader" processor="itemProcessor"
commit-interval="5" />
<chunk writer="itemWriter" reader="itemReader" processor="itemProcessor" commit-interval="5" />
<listeners>
<listener ref="fileNameListener" />
</listeners>
</tasklet>
</step>
<bean id="fileNameListener"
class="org.springframework.batch.sample.common.OutputFileListener"
scope="step">
<bean id="fileNameListener" class="org.springframework.batch.sample.common.OutputFileListener" scope="step">
<property name="path" value="file:./target/output/file/" />
</bean>
<bean id="itemReader" scope="step" autowire-candidate="false"
parent="itemReaderParent">
<bean id="itemReader" scope="step" autowire-candidate="false" parent="itemReaderParent">
<property name="resource" value="#{stepExecutionContext[fileName]}" />
</bean>
<bean id="inputTestReader"
class="org.springframework.batch.item.file.MultiResourceItemReader">
<bean id="inputTestReader" class="org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="classpath:data/iosample/input/delimited*.csv" />
<property name="delegate" ref="testItemReader" />
</bean>
<bean id="outputTestReader"
class="org.springframework.batch.item.file.MultiResourceItemReader"
scope="prototype">
<bean id="outputTestReader" class="org.springframework.batch.item.file.MultiResourceItemReader" scope="prototype">
<property name="resources" value="file:target/output/file/delimited*.csv" />
<property name="delegate" ref="testItemReader" />
</bean>
<bean id="testItemReader" parent="itemReaderParent" />
<bean id="itemReaderParent" class="org.springframework.batch.item.file.FlatFileItemReader"
abstract="true">
<bean id="itemReaderParent" class="org.springframework.batch.item.file.FlatFileItemReader" abstract="true">
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value="," />
<property name="names" value="name,credit" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType"
value="org.springframework.batch.sample.domain.trade.CustomerCredit" />
<bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType" value="org.springframework.batch.sample.domain.trade.CustomerCredit" />
</bean>
</property>
</bean>
</property>
</bean>
<bean id="itemProcessor"
class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditIncreaseProcessor" />
<bean id="itemProcessor" class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditIncreaseProcessor" />
<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter"
scope="step">
<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" value="#{stepExecutionContext[outputFile]}" />
<property name="lineAggregator">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<property name="delimiter" value="," />
<property name="fieldExtractor">
<bean
class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value="name,credit" />
</bean>
</property>

View File

@@ -1,62 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<job id="partitionJdbcJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step" parent="step1:master" />
<step id="step">
<partition step="step1" partitioner="partitioner">
<handler grid-size="2" task-executor="taskExecutor"/>
</partition>
</step>
</job>
<bean name="step1:master"
class="org.springframework.batch.core.partition.support.PartitionStep">
<property name="jobRepository" ref="jobRepository" />
<property name="stepExecutionSplitter">
<bean
class="org.springframework.batch.core.partition.support.SimpleStepExecutionSplitter">
<property name="jobRepository" ref="jobRepository" />
<property name="stepName" value="step1" />
<property name="partitioner">
<bean
class="org.springframework.batch.sample.common.ColumnRangePartitioner">
<property name="dataSource" ref="dataSource" />
<property name="table" value="CUSTOMER" />
<property name="column" value="ID" />
</bean>
</property>
</bean>
</property>
<property name="partitionHandler">
<bean
class="org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler">
<property name="taskExecutor">
<bean class="org.springframework.core.task.SyncTaskExecutor" />
</property>
<property name="step" ref="step1" />
<property name="gridSize" value="2" />
</bean>
</property>
<bean id="partitioner" class="org.springframework.batch.sample.common.ColumnRangePartitioner">
<property name="dataSource" ref="dataSource" />
<property name="table" value="CUSTOMER" />
<property name="column" value="ID" />
</bean>
<bean id="taskExecutor" class="org.springframework.core.task.SyncTaskExecutor" />
<step id="step1" xmlns="http://www.springframework.org/schema/batch">
<tasklet transaction-manager="transactionManager">
<chunk writer="itemWriter" reader="itemReader" processor="itemProcessor"
commit-interval="5" />
<chunk writer="itemWriter" reader="itemReader" processor="itemProcessor" commit-interval="5" />
<listeners>
<listener ref="fileNameListener" />
</listeners>
</tasklet>
</step>
<bean id="fileNameListener"
class="org.springframework.batch.sample.common.OutputFileListener"
scope="step">
<bean id="fileNameListener" class="org.springframework.batch.sample.common.OutputFileListener" scope="step">
<property name="path" value="file:./target/output/jdbc/" />
</bean>
<bean id="itemReader" scope="step" autowire-candidate="false"
parent="itemReaderParent">
<bean id="itemReader" scope="step" autowire-candidate="false" parent="itemReaderParent">
<property name="sql">
<value>
<![CDATA[
@@ -65,8 +43,7 @@
</value>
</property>
<property name="preparedStatementSetter">
<bean
class="org.springframework.batch.core.resource.ListPreparedStatementSetter">
<bean class="org.springframework.batch.core.resource.ListPreparedStatementSetter">
<property name="parameters">
<list>
<value>#{stepExecutionContext[minValue]}</value>
@@ -78,9 +55,7 @@
</property>
</bean>
<bean id="outputTestReader"
class="org.springframework.batch.item.file.MultiResourceItemReader"
scope="prototype">
<bean id="outputTestReader" class="org.springframework.batch.item.file.MultiResourceItemReader" scope="prototype">
<property name="resources" value="file:target/output/jdbc/*.csv" />
<property name="delegate" ref="testItemReader" />
</bean>
@@ -89,17 +64,14 @@
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value="," />
<property name="names" value="id,name,credit" />
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType"
value="org.springframework.batch.sample.domain.trade.CustomerCredit" />
<bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
<property name="targetType" value="org.springframework.batch.sample.domain.trade.CustomerCredit" />
</bean>
</property>
</bean>
@@ -116,29 +88,22 @@
</property>
</bean>
<bean id="itemReaderParent"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
abstract="true">
<bean id="itemReaderParent" class="org.springframework.batch.item.database.JdbcCursorItemReader" abstract="true">
<property name="dataSource" ref="dataSource" />
<property name="rowMapper">
<bean
class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditRowMapper" />
<bean class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditRowMapper" />
</property>
</bean>
<bean id="itemProcessor"
class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditIncreaseProcessor" />
<bean id="itemProcessor" class="org.springframework.batch.sample.domain.trade.internal.CustomerCreditIncreaseProcessor" />
<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter"
scope="step">
<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" value="#{stepExecutionContext[outputFile]}" />
<property name="lineAggregator">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
<property name="delimiter" value="," />
<property name="fieldExtractor">
<bean
class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value="id,name,credit" />
</bean>
</property>