如何配置Spring定时器准确运行时间,例如我想它在每天半夜12点运行一次

 我来答
狂热1985
推荐于2017-11-24 · TA获得超过782个赞
知道小有建树答主
回答量:517
采纳率:0%
帮助的人:326万
展开全部
Spring quartz的配置:
表达式意义
"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

美好一瞬间1985
2018-03-30 · TA获得超过3775个赞
知道小有建树答主
回答量:34
采纳率:76%
帮助的人:4590
展开全部

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;}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
加菲猫的图书馆
2011-02-11 · TA获得超过255个赞
知道小有建树答主
回答量:497
采纳率:0%
帮助的人:274万
展开全部
dos命令里面有个关键字是at

语法:
at 24:00 shutdown -s -t 15
在半夜12点开始倒计时15秒关闭电脑
你可以参考,或者在dos里输入:at /?
查看他的具体用法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光子鱼
2011-02-11 · 超过15用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:55.1万
展开全部
Spring中有自带任务调度框架Quartz ,直接在xml配置文件中配置就好,如需要可发你一份配置好的文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rockhb
2011-02-11 · TA获得超过344个赞
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:170万
展开全部
Java里有一个getTime()对象,可以获取当前时间,然后if()判断,如果是24点,那么就执行你的代码就可以。不知道这样可以否。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式