概述
1、入口类 QuartzTask.java
项目加载: Constructor (构造方法) >>@Autowired(依赖注入) > @PostConstruct (初始化)
可以将需要执行的类配置在数据库中,查数据库循环数据
@Component
public class QuartzTask {
private Logger log = LoggerFactory.getLogger(QuartzTask.class);
@Autowired
TaskService taskService;
@PostConstruct
public void task()throws SchedulerException {
log.info("线程开始" + new Date());
// 从数据库中查出需要批量执行的数据
taskService.sendTask(TestTaskService.class, "testService", "testGroup", "0/5 * * * * ?");
log.info("线程结束" + new Date());
}
}
2、QuartzConfig.java
定时配置类,为了生成Scheduler(调度器bean)
@Configuration
public class QuartzConfig {
private Logger log = LoggerFactory.getLogger(QuartzConfig.class);
@Bean
public Scheduler scheduled()throws SchedulerException {
log.info("bulid Scheduler start");
// 创建一个Scheduler
// 获取调度器
SchedulerFactory schedFact = new StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
log.info("bulid Scheduler end");
return sched;
}
}
3、TaskService.java
任务调度类,构建jobDetail实例,构建基于cron表达式的触发器,通过调度器将触发器和job实例关联
@Service
public class TaskService {
// 任务调度
@Autowired
private Scheduler scheduler;
public void sendTask(Class jobClass, String name, String group, String cron) throws SchedulerException {
// 开启调度器
scheduler.start();
// 通过JobBuilder构建JobDetail实例,JobDetail规定只能是实现Job接口的实例
// JobDetail 是具体Job实例
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(name, group).build();
// 基于表达式构建触发器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
// CronTrigger表达式触发器 继承于Trigger
// TriggerBuilder 用于构建触发器实例
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(name, group)
.withSchedule(cronScheduleBuilder).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
}
}
4、TestTaskService.java
具体的业务实现类,实现Job接口
public class TestTaskService implements Job {
private Logger log = Logger.getLogger("TestTaskService.class");
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("test start =============== " + new Date());
}
}
5、涉及jar包
<!--quartz定时器的依赖-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
</dependency>
最后
以上就是留胡子香水为你收集整理的Quartz实现定时任务的全部内容,希望文章能够帮你解决Quartz实现定时任务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复