Spring batch Spring批处理无法读取csv文件

Spring batch Spring批处理无法读取csv文件,spring-batch,Spring Batch,我是SpringBatch的新手,尝试执行这个简单的批处理作业,但是看起来csv文件没有被读取,我没有收到任何错误,但是处理器没有被调用 sample-data.csv已经存在于我的类路径/目标目录中 package hello; import javax.sql.DataSource; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotat

我是SpringBatch的新手,尝试执行这个简单的批处理作业,但是看起来csv文件没有被读取,我没有收到任何错误,但是处理器没有被调用

sample-data.csv已经存在于我的类路径/目标目录中

package hello;

import javax.sql.DataSource;

import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider;
import org.springframework.batch.item.database.JdbcBatchItemWriter;
import org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Bean
    public FlatFileItemReader<Person> reader() {
        return new FlatFileItemReaderBuilder<Person>().name("personItemReader")
                .resource(new ClassPathResource("sample-data.csv")).delimited()
                .names(new String[] { "firstName", "lastName" })
                .fieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {
                    {
                        setTargetType(Person.class);
                    }
                }).build();
    }

    @Bean
    public PersonItemProcessor processor() {
        return new PersonItemProcessor();
    }

    @Bean
    public JdbcBatchItemWriter<Person> writer(DataSource dataSource) {
        return new JdbcBatchItemWriterBuilder<Person>()
                .itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
                .sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)").dataSource(dataSource)
                .build();
    }

    @Bean
    public Step step1(JdbcBatchItemWriter<Person> writer) {
        return stepBuilderFactory.get("step1").<Person, Person>chunk(10).reader(reader()).processor(processor())
                .writer(writer).build();
    }
}
包你好;
导入javax.sql.DataSource;
导入org.springframework.batch.core.Step;
导入org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
导入org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
导入org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
导入org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider;
导入org.springframework.batch.item.database.JdbcBatchItemWriter;
导入org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder;
导入org.springframework.batch.item.file.FlatFileItemReader;
导入org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
导入org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.context.annotation.Bean;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.core.io.ClassPathResource;
@配置
@启用批处理
公共类批处理配置{
@自动连线
JobBuilderFactory JobBuilderFactory;
@自动连线
StepBuilderFactory StepBuilderFactory;
@豆子
公共FlatFileItemReader()读取器{
返回新的FlatFileItemReaderBuilder().name(“PersonitReader”)
.resource(新类路径资源(“sample data.csv”)).delimited()
.names(新字符串[]{“firstName”,“lastName”})
.fieldSetMapper(新的BeanRapperFieldSetMapper(){
{
setTargetType(Person.class);
}
}).build();
}
@豆子
公共PersonItemProcessor处理器(){
返回新的PersonItemProcessor();
}
@豆子
公共JdbcBatchItemWriter编写器(数据源数据源){
返回新的JdbcBatchItemWriterBuilder()
.itemSqlParameterSourceProvider(新的BeanPropertyItemSqlParameterSourceProvider())
.sql(“插入到人员(名字、姓氏)值(:firstName,:lastName)”)。数据源(数据源)
.build();
}
@豆子
公共步骤步骤1(JdbcBatchItemWriter编写器){
返回stepBuilderFactory.get(“step1”).chunk(10).reader(reader()).processor(processor())
.writer(writer.build();
}
}

谢谢@Mahmoud Ben Hassine在添加工作后,工作正常。谢谢您的帮助。

您的配置中没有类型为
Job
的bean。“你想做什么工作?”马哈茂德本哈辛回答说:)