com.example.demo.config.BatchLaunche 中找不到的字段 jobLauncher
Field jobLauncher in com.example.demo.config.BatchLaunche that could not be found
com.example.demo.config.BatchLauncher 中的 Field jobLauncher 需要找不到类型 'org.springframework.batch.core.launch.JobLauncher' 的 bean。
注入点有以下注解:
- @org.springframework.beans.factory.annotation.Autowired(要求=真)
操作:
考虑在您的配置中定义类型为 'org.springframework.batch.core.launch.JobLauncher' 的 bean。
@Component
public class BatchLauncher {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public BatchStatus run() throws JobParametersInvalidException, JobExecutionAlreadyRunningException,
JobRestartException, JobInstanceAlreadyCompleteException {
JobParameters parameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis())
.toJobParameters();
JobExecution jobExecution = jobLauncher.run(job, parameters);
return jobExecution.getStatus();
}
}
你有很多方法可以解决,都是解决JobLuncher in Spring IOC container exception 说IOC cannot locate的问题JobLuncher class 的 bean 注入 BatchLuncher class,简单使用 @Autowired 根本不够,实际上你是在告诉 IOC JobLuncher class 的实例将被提供,但在编译时他无法找到要注入的实例,所以你需要提供它的一个实例。
- 将
@Service
或 @Component
注释添加到 JobLuncher 的实现中。
- 在@Config注解的一些自定义class中注入JobLuncherclass的实例,并通过@Bean注解JobLuncher的方法注入器进行IOC扫描。
@Configuration
public class JobLuncherConfig {
@Bean
public JobLuncher jobLuncher() {
//return an implementation or concrete class of JobLuncher class-interface
return new JobLuncher(...);
}
}
其实还有很多其他的方法,更多的是我建议更深入地了解Spring容器和控制反转,你可以从here开始。
com.example.demo.config.BatchLauncher 中的 Field jobLauncher 需要找不到类型 'org.springframework.batch.core.launch.JobLauncher' 的 bean。
注入点有以下注解: - @org.springframework.beans.factory.annotation.Autowired(要求=真)
操作:
考虑在您的配置中定义类型为 'org.springframework.batch.core.launch.JobLauncher' 的 bean。
@Component
public class BatchLauncher {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public BatchStatus run() throws JobParametersInvalidException, JobExecutionAlreadyRunningException,
JobRestartException, JobInstanceAlreadyCompleteException {
JobParameters parameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis())
.toJobParameters();
JobExecution jobExecution = jobLauncher.run(job, parameters);
return jobExecution.getStatus();
}
}
你有很多方法可以解决,都是解决JobLuncher in Spring IOC container exception 说IOC cannot locate的问题JobLuncher class 的 bean 注入 BatchLuncher class,简单使用 @Autowired 根本不够,实际上你是在告诉 IOC JobLuncher class 的实例将被提供,但在编译时他无法找到要注入的实例,所以你需要提供它的一个实例。
- 将
@Service
或@Component
注释添加到 JobLuncher 的实现中。 - 在@Config注解的一些自定义class中注入JobLuncherclass的实例,并通过@Bean注解JobLuncher的方法注入器进行IOC扫描。
@Configuration
public class JobLuncherConfig {
@Bean
public JobLuncher jobLuncher() {
//return an implementation or concrete class of JobLuncher class-interface
return new JobLuncher(...);
}
}
其实还有很多其他的方法,更多的是我建议更深入地了解Spring容器和控制反转,你可以从here开始。