Java Reference
In-Depth Information
Listing 9-6. Output Configuration for Format Job
<beans:bean id="outputFile"
class="org.springframework.core.io.FileSystemResource" scope="step">
<beans:constructor-arg value="#{jobParameters[outputFile]}"/>
</beans:bean>
<beans:bean id="flatFileOutputWriter"
class="org.springframework.batch.item.file.FlatFileItemWriter">
<beans:property name="resource" ref="outputFile"/>
<beans:property name="lineAggregator" ref="formattedLineAggregator"/>
</beans:bean>
<beans:bean id="formattedLineAggregator"
class="org.springframework.batch.item.file.transform.
FormatterLineAggregator">
<beans:property name="fieldExtractor">
<beans:bean class="org.springframework.batch.item.file.transform.
BeanWrapperFieldExtractor">
<beans:property name="names"
value="firstName,lastName,address,city,state,zip"/>
</beans:bean>
</beans:property>
<beans:property name="format" value="%s %s lives at %s %s in %s, %s."/>
</beans:bean>
As Listing 9-6 shows, the configuration for the output side of this step is actually smaller than the
input. You begin by configuring of the output file; again, the name of the file is passed in as a job
parameter. Next you have the configuration of the FlatFileItemWriter . flatFileOutputWriter takes two
dependencies: a resource (the file to write to) and the LineAggregator implementation. The last piece of
the output puzzle is the LineAggregator implementation: FormatterLineAggregator in this case. It takes
two dependencies: a FieldExtractor implementation and a format.
The org.springframework.batch.item.file.transform.FieldExtractor interface is intended to
abstract the process of taking the fields of an object tree and convert them into an Object array. With the
objects to be written into an array, the FormatterLineAggregator uses Java's String.format() method in
conjunction with the string provided in the format dependency to generate the formatted String to be
written to the file. In this case, BeanWrapperFieldExtractor uses the getters for each of the properties
defined and returns the results, in order, in an Object array to be formatted according to the format
string. In the case of Listing 9-6, you're extracting the firstName , lastName , address , city , state , and zip
from each item. It's important to note that there is no key/value pairing during the formatting process. If
you want a bean property to appear twice in the formatted String , you need to include it twice, in order,
in the names list.
With all of the input and output configured, all you need to do to complete the job is configure the
step and job. Listing 9-7 shows the complete configuration of formatJob including the previous input
and output.
 
Search WWH ::




Custom Search