最近公司做了一个定时任务的需求,所以先简单搭一下定时器的环境(当然公司是搭好的环境,改改配置,逻辑代码写好即可),开发工具:Eclipse
首先,新建一个maven工程Timer
在pom文件里添加 spring-context-support,spring-tx,quarz三个jar包,spring-context-support 这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。spring-tx提供事务处理,quarz定时任务依赖的jar
百度repository,maven中央仓库找到相关依赖坐标如下:
三个添加完毕后,自动下载jar包,基础环境就好了。
写两个简单定时任务类、内容都是打印当前日期,如图
类路径下新建配置文件:applicationContext-quartz.xml,配置如下:第一个框是定时任务列表,第二框是spring管理的定时类的bean,第三个框是定时任务详细配置,<property name="cronExpression" value="0 0/1 * *,* * ?" />执行时间;<property name="targetObject" ref="TestFristTimer" />,<property name="targetMethod" value="fristPushTimer" />定时任务执行的类,方法。
新建一个启动类,加载配置文件
工程运行
附带:Cron表达式的使用格式是:秒 分 时 日 月 周 年(可选),如 0 0/1 * *,* * ?" 可以加逗号分割,区分短时间,星期以后的长时间
- "30 * * * * ?" 每半分钟触发任务
- "30 10 * * * ?" 每小时的10分30秒触发任务
- "30 10 1 * * ?" 每天1点10分30秒触发任务
- "30 10 1 20 * ?" 每月20号1点10分30秒触发任务
- "30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
- "30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
- "30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
- "30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
- "15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
- "15-45 * * * * ?" 15到45秒内,每秒都触发任务
- "15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
- "15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
- "0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
- "0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
- "0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
- "0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
- "0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
- "0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务