步骤
导入jar: quartz-2.2.1.jar,quartz-jobs-2.2.1.jar
编写定时任务
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
/**
* 清空点赞数据
* @author SunHailong
* */
public class ClearLikesDayJob extends QuartzJobBean{
private static Logger logger = LoggerFactory.getLogger(ClearLikesDayJob.class);
@Autowired
private LikesService likesService;
/*
* 任务每天晚上12点被触发
*/
public void clearLikesEveryDay(){
logger.info("delete likes data every day in 00:00");
likesService.deleteLikesNumAll();
likesService.deleteLikesStateAll();
}
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
likesService= (LikesService) context.getJobDetail()
.getJobDataMap().get("likesService");
clearLikesEveryDay();
}
}
- springmvc-servlet.xml配置文件配置
<bean id="clearLikesDayJob"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="cn.service.ClearLikesDayJob"></property>
<property name="durability" value="true" />
<property name="jobDataAsMap">
<map>
<entry key ="likesService" value-ref="likesServiceImpl"/>
</map>
</property>
</bean>
<bean id="clearlyJobCronTriggerBean"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="clearLikesDayJob"></property>
<property name="cronExpression" value="0 0 0 * * ?"></property>
</bean>
<bean id="trigger"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="clearlyJobCronTriggerBean" />
</list>
</property>
</bean>
- 拓展
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分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分、18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 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 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)