【发布时间】:2017-02-05 05:41:15
【问题描述】:
您好,我是第一次使用 Spring Batch。我的用例是我必须使用 Spring Boot 和 Spring Data 将数据从 oracle db 加载到 csv 文件。 我在 ItemReader 中配置 oracle db 时遇到困难。谁能帮帮我。
这是我的代码
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public PersonAcctRepository personAcctRepository;
@Bean
public ItemWriter<CustomerInsr> writer(){
FlatFileItemWriter<CustomerInsr> writer = new FlatFileItemWriter<CustomerInsr>();
String exportFileHeader = "FIRST_NAM, MIDDLE_NAM, LAST_NAM";
StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
writer.setHeaderCallback(headerWriter);
writer.setResource(new ClassPathResource("sample-data.csv"));
LineAggregator<CustomerInsr> lineAgg = createCustomerInsrAgg();
writer.setLineAggregator(lineAgg);
return writer;
}
@Bean
public LineAggregator<CustomerInsr> createCustomerInsrAgg(){
DelimitedLineAggregator<CaresCustomerInsr> deliAgg = new DelimitedLineAggregator<CustomerInsr>();
deliAgg.setDelimiter(",");
FieldExtractor<CustomerInsr> fieldExtractor = createCustomerInsrExtractor();
deliAgg.setFieldExtractor(fieldExtractor);
return deliAgg;
}
@Bean
public FieldExtractor<CustomerInsr> createCustomerInsrExtractor(){
BeanWrapperFieldExtractor<CustomerInsr> fieldExtractor = new BeanWrapperFieldExtractor<CustomerInsr>();
fieldExtractor.setNames(new String []{"firstName", "middleName", "lastName"});
return fieldExtractor;
}
@Bean
public ItemReader<CustomerInsr> reader(){
RepositoryItemReader<CustomerInsr> reader = new RepositoryItemReader<CustomerInsr> ();
reader.setRepository(personAcctRepository);
reader.setMethodName("findAll");
return reader;
}
@Bean
public Job job(){
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step())
.end()
.build();
}
@Bean
public Step step(){
return stepBuilderFactory.get("step")
.<CustomerInsr, CustomerInsr> chunk(10)
.reader(reader())
.writer(writer())
.build();
}
}
【问题讨论】:
-
你能详细说明一下,有什么遗漏/错误。堆栈跟踪?
-
我正在尝试从 oracle db 中读取数据,我正在使用 Spring 数据存储库(JPA 存储库,使用 findAll() 方法)。我在 application.properties 文件中提供数据库属性。我应该如何在 ItemReader 中配置方法(findAll())和数据源
标签: spring-boot spring-data-jpa spring-batch