Я работаю над Spring Batch с Spring Boot.
Я пытаюсь внедрить слой обслуживания в ItemWriter, но он не работает.
Я получаю службу как ноль
@Component
public class DataWriter implements ItemWriter<String> {
@Autowired
PersonService service;
@Override
public void write(List<? extends String> messages) throws Exception {
//personDao.getEmployee();
System.out.println("I am in read");
service.save();
System.out.println("Writing the data ");
}
}
Service layer
@Service
public class PersonService {
@Autowired
PersonDao dao;
public void save() {
System.out.println(dao);
}
}
файл конфигурации
Это мой файл конфигурации. Я думаю, что я создаю объект datawriter с помощью нового ключевого слова, и это может быть проблемой. Если это то, как я могу это исправить.
@Configuration
public class JobConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired(required = true)
public JobLauncher JobLauncher;
@Autowired
Job processJob;
@Bean
public Job processJob() {
return jobBuilderFactory.get("processJob").incrementer(new RunIdIncrementer()).listener(listener())
.flow(orderStep1()).end().build();
}
@Bean
public Step orderStep1() {
return stepBuilderFactory.get("orderStep1").<String, String>chunk(1).reader(new DataReader())
.processor(new DataProcessor()).writer(new DataWriter()).build();
}
@Bean
public JobExecutionListener listener() {
return new JobCompletionListener();
}
@Scheduled(cron = "${scheduling.job.job1}")
public void handle() throws Exception {
JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis())
.toJobParameters();
JobLauncher.run(processJob, jobParameters);
}
}
Чего мне не хватает?