-
Notifications
You must be signed in to change notification settings - Fork 1
Intégration dans Spring
lecogiteur edited this page May 29, 2013
·
6 revisions
Il est possible d'intégrer très facilement Csvbang à Spring.
<bean name="csvWriterFactory" class="fr.csvbang.factory.FactoryCsvWriter">
<constructor-arg value="my.package1,my.package2"/>
</bean>
<bean name="csvWriter" factory-bean="csvWriterFactory" scope="prototype" factory-method="createCsvWriter" />
L'instance du bean FactoryCsvWriter est un singleton et la configuration de CsvBang est chargée au chargement du contexte Spring une unique fois.
Il est possible de créer facilement un bean Factory (ici csvWriter) à partir de la méthode createCsvWriter. Mais ceci n'est pas obligatoire.
Deux exemples d'utilisation:
- Création des classes d'écriture à partir de la fabrique FactoryCsvWriter
- On laisse à Spring le soin de gérer la fabrique et la génération des beans.
public class Writer{
@Autowired
private FactoryCsvWriter csvWriterFactory;
private BeanFactory springFactory;
public CsvWriter getWriter(Class clazz){
return csvWriterFactory.createCsvWriter(clazz, "myfile.csv");
//or
return (CsvWriter) springFactory.getBean("csvWriter", clazz, "myfile.csv");
}
}
Il est possible d'intégrer CsvBang à Spring Batch.
Un exemple simple:
La configuration
<bean name="csvWriterFactory" class="fr.csvbang.factory.FactoryCsvWriter">
<constructor-arg value="my.package1,my.package2"/>
</bean>
Le Csv Bean
package my.package1;
@CsvType
public class MyEntity{
@CsvField
private String name;
@CsvField
private String address;
public String getName(){
return name;
}
public String getAddress(){
return address;
}
}
L'ItemWriter
@Component("myCsvItemWriter")
public class MyCsvItemWriter implements ItemWriter<MyEntity> {
@Autowired
private FactoryCsvWriter csvWriterFactory;
private CsvWriter writer;
@BeforeStep
public void beforeStep(StepExecution stepExecution) {
writer = csvWriterFactory.createCsvWriter(clazz, "myfile.csv");
}
@Override
public void write(List<MyEntity> items) throws Exception {
writer.write(items);
}
@AfterStep
public void afterStep(StepExecution stepExecution) {
writer.close();
}
}