在我的spring批处理代码中,我正在读取一个csv文件,将其处理成一个bean,并尝试用Writer中的值获取该bean。但我无法在Writer中找到豆子。uservo
是包含csv文件中的值的bean,我正试图在Writer中获取这些值。我还将bean初始化为一个公共变量,希望它能由读取器、处理器和写入器处理。甚至在uservouser=new UserVO();
之前使用了@bean
和@autowired
注释。请帮我解决这个问题。下面是我的代码,
@EnableBatchProcessing
@Configuration
public class CsvFileToDatabaseConfig {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public DataSource dataSource;
UserVO user = new UserVO();
@Bean
public FlatFileItemReader<UserVO> csvReader() {
FlatFileItemReader<UserVO> reader = new FlatFileItemReader<UserVO>();
try{
reader.setResource(new ClassPathResource("user.csv"));
reader.setLineMapper(new DefaultLineMapper<UserVO>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] { "memberId", "mailId", "fullName", "appCode", "active"});
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<UserVO>() {{
setTargetType(UserVO.class);
}});
}});
}
catch(Exception e){
System.out.println(" Exception in reading " + e.getMessage());
}
return reader;
}
@Bean
ItemProcessor<UserVO, UserVO> csvProcessor() {
return new Processor();
}
@Bean
public JdbcBatchItemWriter<UserVO> csvWriter(UserVO user) {
JdbcBatchItemWriter<UserVO> csvWriter = new JdbcBatchItemWriter<UserVO>();
System.out.println("MEMBER ID --->" + user.memberId);
return csvWriter;
}
@Bean
public Step csvFileToDatabaseStep() throws Exception {
LDSService ldsService = new LDSService();
return stepBuilderFactory.get("csvFileToDatabaseStep")
.<UserVO, UserVO>chunk(1)
.reader(csvReader())
.processor(csvProcessor())
.writer(csvWriter(user))
.build();
}
@Bean
Job csvFileToDatabaseJob(JobCompletionNotificationListener listener) throws Exception {
return jobBuilderFactory.get("csvFileToDatabaseJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(csvFileToDatabaseStep())
.end()
.build();
}
}
public class SkipFooterLineItemProcessor implements ItemProcessor<UserVO, UserVO> {
@Override
public UserVO process(UserVO item) throws Exception {
return item;
}
}
我有一个要求,我需要从xls(其中存在一个名为netCreditAmount的列)中读取值并将值保存在数据库中。要求是从所有行中添加netCreditAmount的值,然后在数据库中仅为xls中的第一行设置此总和,其余行插入相应的netCreditAmounts。我应该如何在Spring Batch中进行实施。普通的阅读器、处理器和写入器工作正常,但我应该在哪里插入这个实现?谢谢!
我有一个包含数据(案例)记录的CSV文件,为此我创建了一个对象,但是的某些属性必须是文件名中包含的数据的字段(每个文件都必须有一个包含一些数据的严格结构的名称)。 我想要实现的是将文件名中包含的数据传递给项目处理器,在这里,我将在传递给项目编写器之前将该数据追加到每个中。 当我从控制器启动作业时,是否有人知道如何将数据传递给步骤? 提前道谢。
我有一个包含Reader->Processor->Writer的spring批处理。 B/W传递的数据类型为: 在中从CSV文件读取一个简单的批处理数据时,中的一些处理&输出CSV文件由编写。 请建议。如果你认为任何其他方法会更好,请建议。 谢谢
我有带隔板的Spring批。gridSize是10,因此它将生成10个线程。一切都是默认的Bean单例。TaskExeutor最多有15个核心池10个。 这是读卡器,这个读卡器将返回数据库中的4行。自定义对象1到4。 示例查询: 设置非常简单。只是一个批处理过程,分区网格大小为10。 当我运行它时,Item reader会得到4条正确的记录。但当读卡器将数据传递给项目处理器时,我得到了这样的日志,
我正在使用Spring batch编写一个批处理,并试图将一个作业参数传递给item reader bean定义,但是当我执行该批处理时,我总是得到以下错误: 我只是不知道我做错了什么,因为根据我在网上发现的文档和其他帖子,一切似乎都很好。 编辑:我使用的是Spring 4.3.3和Spring Batch 3.0.7
我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?