Hey, I am trying to implement spring batch 5 with mongodb
SodRepository sodRepository;
@Bean
public ItemReader<Sod> csvFileReader() {
FlatFileItemReader<Sod> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource(file)); // Specify your CSV file
reader.setLineMapper(new DefaultLineMapper<Sod>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[]{"groupCode","original", "conflictsWith", "level", "relationship", "validFrom", "validTo"});
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Sod>() {{
setTargetType(Sod.class);
}});
}});
return reader;
}
@Bean
public ItemWriter<Sod> mongoItemWriter() {
return items -> sodRepository.saveAll(items);
}
@Bean
public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new JobBuilder("myJob",jobRepository)
.start(step1(jobRepository,transactionManager))
.build();
}
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("myStep",jobRepository)
.<Sod, Sod>chunk(100)
.reader(csvFileReader())
.writer(mongoItemWriter())
.transactionManager(transactionManager)
.build();
}
and mongo config:
@Configuration
@EnableConfigurationProperties
@EnableMongoRepositories(
basePackages = {"com.airtel.africa.ums.client.config"},
mongoTemplateRef = "mongoTemplate"
)
@EnableTransactionManagement
public class MongoConfig extends AbstractMongoClientConfiguration{
@Value("${spring.data.mongodb.database}")
private String databaseName;
@Value("${spring.data.mongodb.uri}")
private String mongoUrl;
@Bean
MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
return new MongoTransactionManager(dbFactory);
}
@Override
protected String getDatabaseName() {
return databaseName;
}
@Override
public MongoClient mongoClient() {
final ConnectionString connectionString = new ConnectionString(mongoUrl);
final MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
.applyConnectionString(connectionString).build();
return MongoClients.create(mongoClientSettings);
}
@Bean(name = "mongoTemplate")
public MongoTemplate mongoTemplate(MongoDatabaseFactory mongoDatabaseFactory) {
return new MongoTemplate(mongoDatabaseFactory);
}
}
am getting error - Parameter 0 of method csvProcessingStep in com.airtel.africa.ums.client.excel.ExcelUploadConfig required a bean named 'dataSource' that could not be found.
Top comments (0)