我正在使用Spring Boot进行Spring Batch。
我正在尝试在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);
}
}
配置文件
这是我的配置文件。我想我正在用新的关键字创建数据写入器对象,这可能是问题。如果是的话,我该如何修复它。
@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);
}
}
我想念什么?
答案 0 :(得分:0)
您已经自己掌握了它:
使用new DataWriter()
可以在不使用Spring-Boot的情况下创建自己的实例,因此Spring-Boot没有任何机会注入所需的依赖项。
只需使用@Autowired
-注解(或通过@Bean
用您自己的bean)注入“ DataWriter”,就可以了。
提示:您也可以使用构造函数注入,这会更好,因为您可以安全地使用循环依赖。