Spring batch 命令行运行程序和作业启动器
当我试图通过CommandLineRunner运行我的作业时,我得到以下错误:必须提供JobLauncher。请在配置中添加一个 我的Spring批处理配置类:Spring batch 命令行运行程序和作业启动器,spring-batch,Spring Batch,当我试图通过CommandLineRunner运行我的作业时,我得到以下错误:必须提供JobLauncher。请在配置中添加一个 我的Spring批处理配置类: @Configuration @EnableBatchProcessing public class SpringBatchConfiguration implements BatchConfigurer{ @Autowired private DataSource dataSource; @Auto
@Configuration
@EnableBatchProcessing
public class SpringBatchConfiguration implements BatchConfigurer{
@Autowired
private DataSource dataSource;
@Autowired
private JobBuilderFactory jobBuilders;
@Autowired
private StepBuilderFactory stepBuilders;
@Autowired
AdminAPIClient client;
@Autowired
AdditionalConfiguration additionalConfiguration;
@Autowired
EmailSender emailSender;
@Autowired
JobLauncher launcher;
public SpringBatchConfiguration() {}
private AdditionalConfiguration config;
public SpringBatchConfiguration(AdditionalConfiguration configuration) {
this.config = configuration;
}
@Override
public JobRepository getJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource);
factory.setTransactionManager(getTransactionManager());
factory.setIsolationLevelForCreate(this.getConfiguration().getIsolationLevelForCreate());
factory.setTablePrefix(this.getConfiguration().getSpringBatchTablePrefix());
factory.setMaxVarCharLength(1200);
return factory.getObject();
}
@Override
public PlatformTransactionManager getTransactionManager() throws Exception {
return new DataSourceTransactionManager(dataSource);
}
@Override
public JobLauncher getJobLauncher() throws Exception {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(getJobRepository());
jobLauncher.afterPropertiesSet();
this.launcher = jobLauncher;
return jobLauncher;
}
@Override
public JobExplorer getJobExplorer() throws Exception {
JobExplorerFactoryBean factoryBean = new JobExplorerFactoryBean();
factoryBean.setDataSource(this.dataSource);
factoryBean.afterPropertiesSet();
return factoryBean.getObject();
}
public AdditionalConfiguration getConfiguration() {
return config;
}
public void setConfiguration(AdditionalConfiguration configuration) {
this.config= configuration;
}
@Bean("dateRollForwardJob")
public Job dateRollForwardJob() {
return jobBuilders.get("someJob")
//.preventRestart()
.incrementer(new RunIdIncrementer())
.start(rollForwardStep())
.listener(new DateRollForwardJobListener(emailSender))
.build();
}
@Bean
public Step rollForwardStep() {
return stepBuilders.get(StatementJobs.DATE_ROLLFORWARD_TASK.name())
.tasklet(dateRollForwardTasklet(client, additionalConfiguration))
.build();
}
@Bean
public Tasklet dateRollForwardTasklet(AdminAPIClient client, AdditionalConfiguration configuration) {
return new DateRollForwardTasklet(client, additionalConfiguration);
}
}
我的命令行:
java -cp <classpath dirs> org.springframework.batch.core.launch.support.CommandLineJobRunner org.springframework.batch.core.launch.support.CommandLineJobRunner <<packagename>.SpringBatchConfiguration someJob
java-cp org.springframework.batch.core.launch.support.CommandLineJobRunner org.springframework.batch.core.launch.support.CommandLineJobRunner因为您使用的是Spring Boot,所以不需要使用CommandLineJobRunner运行作业。您可以使用以下工具运行作业:java-jaryourjob.jar
。看一下入门指南:因为您使用的是Spring Boot,所以不需要使用CommandLineJobRunner运行作业。您可以使用以下工具运行作业:java-jaryourjob.jar
。请参阅《入门指南》: