1.spring以及springmvc做整合需要导入相应的jar包,由于使用的是maven项目,直接在pom.xml中引入依赖:
`
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>`
2.编写一个我们自己的job类:
`
@Component
public class OrderCancelJob {
@Autowired
UserService userService;
@RequestMapping("/order.do")
public String orderCancel (){
System.out.println("1111111111111111111");
boolean bo = userService.orderCancel(2);
System.out.println("2222222222222222222222");
if (bo){
System.out.println("已经超时,订单取消");
}else{
System.out.println("订单取消失败");
}
return "success";
}
}
3.导入相关的依赖之后我们需要一个在项目启动指定web.xml读取的配置类
<!--app-servlet.xml spring-servlet.xml srping-config.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-*.xml</param-value>
</init-param>
<!--随Tomcat启动初始化-->
<load-on-startup>1</load-on-startup>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>`
4.配置spring-quartz的配置文件
`
<!--
Spring整合Quartz进行配置遵循下面的步骤:
1:定义工作任务的Job
2:定义触发器Trigger,并将触发器与工作任务绑定
3:定义调度器,并将Trigger注册到Scheduler
-->
<!-- 1:定义任务的bean ,这里使用JobDetailFactoryBean,也可以使用MethodInvokingJobDetailFactoryBean ,配置类似-->
<bean name="lxJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="orderCancelJob"/><!-- 指定是哪个定时任务类 -->
</property>
<property name="targetMethod">
<value>orderCancel</value><!-- 指定要执行的类里面的哪个方法 -->
</property>
</bean>
<!-- 2:定义触发器的bean,定义一个Cron的Trigger,一个触发器只能和一个任务进行绑定 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 指定Trigger的名称 -->
<property name="name" value="trigger1"/>
<!-- 指定Trigger的名称 -->
<property name="group" value="trigger_group1"/>
<!-- 指定Tirgger绑定的JobDetail -->
<property name="jobDetail" ref="lxJob"/>
<!-- 指定Cron 的表达式 ,当前是每隔5s运行一次 -->
<property name="cronExpression" value="*/5 * * * * ?" />
</bean>
<!-- 3.定义调度器,并将Trigger注册到调度器中 -->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<!-- 添加 quartz 配置,不写默认即可 -->
</bean>
`