如何配置Spring定时器准确运行时间,例如我想它在每天半夜12点运行一次
表达式意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点
0 6 * * *
每两个小时
0 */2 * * *
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3
1月1日早上4点
0 4 1 1 *
希望对你有帮助!
参考资料: http://www.javaeye.com/topic/117244
Spring中有自带任务调度框架Quartz ,直接在xml配置文件中配置就好。
一般我们使用spring定时器的时候都是配置的固定时间在spring配置文件中,如果我们有一个时间设置页面,通过这个页面设置定时器的执行时间,就可以达到动态执行的效果。
上代码:
package com.test.action;
import java.text.ParseException;
import javax.annotation.Resource;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.scheduling.quartz.CronTriggerBean;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport{ @Resourcepublic CronTriggerBean triggerBean;
//系统 public CronTriggerBean triggerTempBean;
@Resource private Scheduler scheduler;
private String configTime;
public String configTime(){ try { /*得到系统设置的定时器执行时间
*/System.out.println(triggerBean.getCronExpression());
/*得到指定定时器, testDoTrigger为applicationContext.xml中CronTriggerBean*/
triggerTempBean = (CronTriggerBean) scheduler.getTrigger("testDoTrigger", Scheduler.DEFAULT_GROUP);
/*指定定时器的执行时间*/
System.out.println(triggerTempBean.getCronExpression());
/*将指定定时器的执行时间设置为从前台传递过来的时间*/
triggerTempBean.setCronExpression(configTime);
/*让设置生效*/
scheduler.rescheduleJob("testDoTrigger", Scheduler.DEFAULT_GROUP,triggerTempBean);
} catch(ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
public String getConfigTime(){
return configTime;
}
public void setConfigTime(String configTime){
this.configTime = configTime;}
语法:
at 24:00 shutdown -s -t 15
在半夜12点开始倒计时15秒关闭电脑
你可以参考,或者在dos里输入:at /?
查看他的具体用法