您的位置:首页 > 编程语言 > Java开发

Spring Boot Quartz集成(二)

2017-08-17 00:00 441 查看
摘要: quartz逻辑优化

1.根据之前创建的项目spring-boot-quartz

2.完善其Task任务类,若需要创建多个不同时间段的任务类,怎么解决!所以需要对MyTask任务类进行优化。

3.编写公共的BaseTask任务类,把之前在MyTask任务类中的代码移到BaseTask类中;而MyTask只需要继承BaseTask类,并重写起执行方法。

public class BaseTask implements Job{
@Autowired
private Scheduler scheduler;

@PostConstruct // 相当于init-method
public void init(){
//jobDetail  获取对应运行类的名称,设置成其Job名称及Job组
JobDetail jobDetail = JobBuilder.newJob(this.getClass()).withIdentity(this.getClass().getSimpleName()+"_Job",this.getClass().getSimpleName()+"_group").build();
//通过Cron格式时间定义执行时间
String cronExpress=getCronExpression();
//trigger  获取对应运行类的名称,设置成其Trigger名称及Trigger组
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(this.getClass().getSimpleName()+"_Trigger",this.getClass().getSimpleName()+"_group").startNow().withSchedule(CronScheduleBuilder.cronSchedule(cronExpress)).build();

try {
scheduler.scheduleJob(jobDetail,trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//此处的方法没任何意义,意义在其继承的子类中编写自身的逻辑执行代码
}
// 设置每个继承子类的执行时间,时间格式必须Cron
public String getCronExpression(){
return  null;
}
}

4.继承的子类代码;可根据不同需要创建多个执行Task类,并设置不同的启动时间

@Service
public class MyTask extends BaseTask{

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("this is task one"+new Date());
}

@Override
public String getCronExpression() {
return "0/10 * * * * ?";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring Boot Quartz