初识Quartz(入门案例)+常用的Cron表达式

1.Quartz架构图

1.实体层

package cn.happy.entity;
//1.
public class Plan {
    //时间
    private String date;

    //任务
    private String task;

    public Plan(String date, String task) {
        this.date = date;
        this.task = task;
    }

    public Plan() {
    }

    @Override
    public String toString() {
        return "Plan [date=" + date + ", task=" + task + "]";
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }

}

Plan实体类

2.服务层

package cn.happy.service;

import java.util.ArrayList;
import java.util.List;
//2.
import cn.happy.entity.Plan;

public class RemindService {
    //0.2用来打印集合中提醒内容的方法
    public void printMessage(){
        List<Plan> list=getPlasnForToday();
        for(Plan plan : list){
            //单个的plan
            System.out.println("计划的时间"+plan.getDate()+"\t计划内容:"+plan.getTask());
        }
    }

    //创建一个集合,并且方法返回值是一个集合类型
    public List<Plan>  getPlasnForToday(){
        List<Plan> list=new ArrayList<Plan>();
        Plan plan1=new Plan("2016年12月17日","月底可以买回家的车票!");
        Plan plan2=new Plan("2016年12月17日","webservice");
        list.add(plan2);
        list.add(plan1);
        return list;
    }

}

RemindService

3.任务类的定义RemindJob implements Job

package cn.happy.quartz;

import cn.happy.service.RemindService;

//让一个普通类变成计划
public class RemindJob implements Job{
    //植入service 对象
    private RemindService service=new RemindService();
    @Override
    public  void execute(JobExecutionContext context)throws JobExecutionException{
        service.printMessage();

    }

    public RemindService getService() {
        return service;
    }

    public void setService(RemindService service) {
        this.service = service;
    }

}

RemindJob

3.在Test类中综合咱们的计划和触发器

调度器≈Job+trigger

package cn.happy.test;

import java.sql.Date;

import cn.happy.quartz.RemindJob;

public class MyQuertzTest {
    public static void tool() throws SchedulerException{
        //第一步构建Job
        JobDetail job=JobBuilder.newJob(RemindJob.class)//
                .withIdentity("job1","group1")//
                .build();

        //第二步构建Trigger
        /*Date runTime=DateBuilder.evenMinuteDate(new Date(System.currentTimeMillis()));
        Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trigger1","group1")//
                .startAt(runTime).build();*/

        /*Trigger trigger=TriggerBuilder.newTrigger()//
                .withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))//
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()//
                        //.withIntervalInMinutes(1)//一分钟出现一次
                        //.withIntervalInMilliseconds(2)//两毫秒出现一次
                        withIntervalInSeconds(2)//2秒出现一次
                        //.repeatForever()//可省略
                        )//
                .startAt(new Date(System.currentTimeMillis()+2000))//
                .build();*/

        Trigger trigger=TriggerBuilder.newTrigger()//
                .withIdentity("myTrigger","myTriggerGroup")//
                .withSchedule(CronScheduleBuilder.cronSchedule("0 55 08 ? * 1#3 2016")).build();

        //第三步绑定  Job 和 Trigger
        SchedulerFactory sf=new StdSchedulerFactory();
        Scheduler sched=sf.getScheduler();
        sched.scheduleJob(job,trigger);
        sched.start();
        //Thread.sleep(3000);//睡眠3秒钟
        sched.shutdown();//停止
    }

    public static void main(String[] args) throws SchedulerException {
        tool();
        System.out.println("aaaaaaaaa");

    }

}

测试类

总结:常用的Cron表达式

时间: 2024-08-01 19:28:54

初识Quartz(入门案例)+常用的Cron表达式的相关文章

quartz定时任务中常用的cron表达式

一:定时cron的格式,一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为: 1.秒(0~59) 2.分钟(0~59) 3.小时(0~23) 4.天(月(0~31,但是你需要考虑你月的天数) 5.月(0~11) 6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 二:定时cron可以写的参数 其中每个元素可以是一个值(如6), 一个连续区间(9-12), 一个间隔时间(8-18/4)(/表示

Quartz.net配置文件实例及cron表达式详解

从XML文件创建作业 最新版本的quartz.net支持直接从xml文件创建作业,使用起来很方便.配置文件的格式可以参考下面的例子 <?xml?version="1.0"?encoding="UTF-8"?><quartz?xmlns="http://quartznet.sourceforge.net/JobSchedulingData"????????xmlns:xsi="http://www.w3.org/2001

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency> <groupId>org

Quartz 入门详解

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表.Jobs可以做成标准的Java组件或 EJBs.官方网站:http://www.opensymphony.com/quartz 相关Jar:   quartz-all-1.6.0.jar   jta.jar   commons-logging-1.1.jar

Quartz.net的cron表达式

写在前面 前面有一篇文章用到了quartz.net,在设置定时时间的时候,使用了cron表达式,这里记录几种常见设置方式,方便对照使用. 详情 在这篇文章:Quartz.Net在windows服务中的使用 中介绍了windows 服务和定时任务的搭配使用.其中: //新建一个触发器 ITrigger trigger = TriggerBuilder.Create().StartNow().WithCronSchedule(StrCron).Build(); 这句代码WithCronSchedul

quartz cron表达式在线生成

最近使用了quartz定时器,有感于起cron表达式有点复杂,且无法实时判断定时时间是否正确,因此写了个在线表达式及根据表达式获得前10次执行时间. 访问地址如下:http://cron.g2room.com/ 使用如下: 打开主页如下: 点击cron配置或点击菜单栏,则进入到cron表达式配置界面: 界面分为5个部分:1.菜单栏.2.设置内容区.3.设置结果展示区.4.生成表达式展示区.5.表达式触发时间展示区. ?  菜单栏:展示cron表达式需要设置的字段项: ?  设置内容区:此区域为设

quartz.net 时间表达式----- Cron表达式详解

序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无缝,说是编码艺术凝集一点不过分. 牛逼吹完啦,我就写几个简单的cron表达式欣赏下: 1.0/20 * * * * ? note:每20秒 2.15 0/2 * * * ? note:每小时从0分钟开始,每2分钟的第15秒,假如当前时间是20:00:00,那么他的维度就在:20:02:5,20:04

Quartz应用实践入门案例二(基于java工程)

在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任何程序中.只要你的程序中需要这项功能!但是对于一些刚开始学习某种框架的菜鸟而言,这似乎就不是那么简单了.如果在学习开源框架API的同时,能有一两个案例小程序配着其API去看,那应该就是事半功倍了. 本文是在自己学习源码和网上查找资料的基础上完成的,将详细叙述在java工程中如何巧妙的融入Quartz框架,小案

Quartz cron 表达式(linux 定时器,java 定时任务,spring task定时任务)

Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别.区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级.许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异. 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上.Quartz 用 cron 表达式存放执行计划.引用了 cron 表达式的 CronTrigger 在计划的时间里