讀資料
@Configuration
public class ItemReaderFileDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Person> fileReader;
@Bean
public Job itemReaderFileJob(){
return jobBuilderFactory.get("itemReaderFileJob")
.start(itemReaderFileStep())
.build();
}
public Step itemReaderFileStep() {
return stepBuilderFactory.get("itemReaderFileStep")
.<Person,Person>chunk(2)
.reader(fileReader)
.writer(list -> {
for(Person person:list){
System.out.println("file======="+person);
}
})
.build();
}
}
寫資料:
@Configuration
public class ItemWriteFileDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Person> dbReader;
@Autowired
private ItemWriter<Person> fileWrite;
@Bean
public Job itemWriteFileJob() {
return jobBuilderFactory.get("itemWriteFileJob")
.start(itemWriteFileStep())
.build();
}
@Bean
public Step itemWriteFileStep() {
return stepBuilderFactory.get("itemWriteFileStep")
.<Person, Person>chunk(1)
.reader(dbReader)
.processor(compositeItemProcessor())
.writer(fileWrite)
/*
重試機制
.faultTolerant()//容錯機制
.retry(Exception.class)//異常類型
.retryLimit(5)//重試次數
*/
/*
跳過異常機制
.faultTolerant()//容錯機制
.skip(Exception.class)//異常類型
.retryLimit(5)//跳過次數
.listener(new SkipListener<Person, Person>() {
@Override
public void onSkipInRead(Throwable throwable) {
}
@Override
public void onSkipInWrite(Person person, Throwable throwable) {
}
@Override
public void onSkipInProcess(Person person, Throwable throwable) {
}
}) //跳過監聽器,重試監聽器
*/
.build();
}
//多種處理器
@Bean
public CompositeItemProcessor<Person,Person> compositeItemProcessor(){
CompositeItemProcessor<Person,Person> processor = new CompositeItemProcessor<>();
List<ItemProcessor<Person,Person>> list = new ArrayList<>();
ItemProcessor<Person,Person> processor1 = new ItemProcessor<Person, Person>() {
@Override
public Person process(Person person) throws Exception {
return null;
}
};
ItemProcessor<Person,Person> processor2 = new ItemProcessor<Person, Person>() {
@Override
public Person process(Person person) throws Exception {
return null;
}
};
list.add(processor1);
list.add(processor2);
processor.setDelegates(list);
try {
processor.afterPropertiesSet();
} catch (Exception e) {
e.printStackTrace();
}
return processor;
}
}