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

2024-11-07 22:06:19
推荐回答(5个)
回答(1):

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 *

希望对你有帮助!

回答(2):

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

回答(3):

dos命令里面有个关键字是at

语法:
at 24:00 shutdown -s -t 15
在半夜12点开始倒计时15秒关闭电脑
你可以参考,或者在dos里输入:at /?
查看他的具体用法

回答(4):

Spring中有自带任务调度框架Quartz ,直接在xml配置文件中配置就好,如需要可发你一份配置好的文件。

回答(5):

Java里有一个getTime()对象,可以获取当前时间,然后if()判断,如果是24点,那么就执行你的代码就可以。不知道这样可以否。