大型运输行业实战_day13_1_定时任务spring-quartz

时间:2023-03-08 17:26:44
大型运输行业实战_day13_1_定时任务spring-quartz

1.jar包

拷贝quartz-2.2.3.jar包到项目

2.编写定时任务类TicketQuart.java

 package com.day02.sation.task;

 import com.day02.sation.page.ResultPage;
import com.day02.sation.query.TicketQueryObj;
import com.day02.sation.service.ITicketService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; /**
* 特别注意定时任务开启越多对性能影响越大
* 如果执行频率相同,建议在一个定时任务开启后执行处理多个业务方法
* Created by Administrator on 1/11.
*/
public class TicketQuartz {
private static final Logger logger= LoggerFactory.getLogger(TicketQuartz.class);
@Autowired
private ITicketService ticketService;
/**
* 每一分钟执行一次
*/
public void getTickteList(){
logger.info("-----getTickteList------start----------");
ResultPage page = ticketService.getPage(new TicketQueryObj());
System.out.println(" page="+page); } /**
* 每2分钟执行一次
*/
public void getRouteList(){
logger.info("------getRouteList-----start----------");
}
}

3.编写spring-quartz.xml配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1.定时任务类-->
<bean id="ticketQuartz" class="com.day02.sation.task.TicketQuartz"/> <!--2.执行方法-->
<bean id="method_getTickteList" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="ticketQuartz"/>
<property name="targetMethod" value="getTickteList"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="method_getRouteList" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="ticketQuartz"/>
<property name="targetMethod" value="getRouteList"/>
<property name="concurrent" value="false"/>
</bean>
<!-- 3.执行的频率 时间-->
<bean id="time_getTickteList" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="method_getTickteList"/>
<!--每一分钟执行一次-->
<property name="cronExpression" value="0 0/1 * * * ?"/>
</bean>
<bean id="time_getRouteList" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="method_getRouteList"/>
<!--每一分钟执行一次-->
<property name="cronExpression" value="0 0/2 * * * ?"/>
</bean>
<!-- 4.开启定时任务-->
<bean id="startJob" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="time_getTickteList"/>
<ref bean="time_getRouteList"/>
</list>
</property>
</bean>
</beans>

4.时间频率表达式规则

  时间大小由小到大排列,从秒开始,顺序为 秒,分,时,天,月,年    *为任意 ?为无限制。 

 具体如下:
"0/10 * * * * ?" 每10秒触发
"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触发

5.将该配置文件与主文件关联,启动项目查看结果!