spring batch结合定时任务记录每一次结果

1.当我们不知道程序怎么跑的时候是十分可怕的,所有对于定时任务,我们需要把每一次的执行细节,传入的参数,执行的结果等保存到数据库中。那么怎样保存那。我这里给出一个方案。springbatch。

2.项目基础springboot,maven,druid。

(1)maven中引入jar:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
@Configuration
@EnableBatchProcessing
@ComponentScan(basePackageClasses = DefaultBatchConfigurer.class)
public class ShopJobConfig {

	@Autowired
	private JobBuilderFactory jobs;

	@Autowired
	private StepBuilderFactory steps;

	@Autowired
	private ShopTask shopTask;

	@Bean
	public Job job(Step step1) {
		return jobs.get("shopJob").incrementer(new RunIdIncrementer()).start(step1).build();
	}

	@Bean
	public Step Step1() {
		MethodInvokingTaskletAdapter adapter = new MethodInvokingTaskletAdapter();
		adapter.setTargetObject(shopTask);
		adapter.setTargetMethod("doTask");
		return steps.get("shopJobStep1").tasklet(adapter).build();
	}

}

(2)配置一个job,来执行我们的任务

@Component
public class ShopTaskImpl implements ShopTask{
	@Override
	public void doTask() {
		System.out.println("task execute");
	}
}

(3)配置一个定时任务来执行:

@Component
public class ScheduledTasks {
	
	@Autowired
	private JobLauncher jobLauncher;
	@Autowired
	private Job job;
	
	@Scheduled(cron="0/5 * * * * * ")
	public void showCurrentTime() throws Exception{
		System.out.println(1);
		Map<String, JobParameter> param = new HashMap<String, JobParameter>();
		param.put("startTime", new JobParameter(new Date()));
		jobLauncher.run(job, new JobParameters(param));
		System.out.println(1);
	}
}

(4)查看数据库:


(5)我们发现springboot启动的时候会自动执行一遍定时任务,若想按照指定的规则来,屏蔽第一次启动执行需要设置:

spring.batch.job.enabled=false

猜你喜欢

转载自blog.csdn.net/u014172271/article/details/80413135