想制定一个定时任务,你只需要加入jar包,写一个定时方法。写一个配置文件,然后在web.xml中加载这个配置文件就可以。很简单

pom.xml

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>

定时任务

public class AttendCheckTask {

@Autowired
private AttendService attendService;

public void checkAttend(){
attendService.checkAttend();
}
}

配置文件spring-job.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">

<!--定时任务bean-->
<bean id="taskJob" class="com.coder520.common.task.AttendCheckTask"/>
<!--指定这个类和方法给一个工厂管理,concurrent的意思是不让相同的任务时间同时发生-->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="concurrent" value="false"/>
<property name="targetObject" ref="taskJob"/>
<property name="targetMethod" value="checkAttend"/>
</bean>
<!--指定一个表达式-->
<bean id="attendCheck" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression">
<value>0/5 * * * * ? *</value>
</property>
</bean>
<!--指定一个触发器-->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="attendCheck"/>
</list>
</property>
</bean>
</beans>

web.xml

用这样的方法使容器加载配置文件

 <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>