项目中用到了定时任务,定期检查未完成事项,记录一下
- 在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-3.0.xsd">
<!-- 调度的事务类 -->
<bean name="morningClassJob" class="com.jy.common.utils.Quartz" />
<!-- 调度事务的方法 -->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="morningClassJob"></property>
<property name="targetMethod" value="check"></property>
<property name="concurrent" value="false"></property>
</bean>
<!-- 设置时间 -->
<bean id="morningJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"></property>
<property name="cronExpression">
<!-- <value>0 0/1 * * * ?</value> -->
<value>0 0 0 * * ?</value>
</property>
</bean>
<!-- 任务2配置 -->
<bean name="job2" class="com.jy.common.utils.Quart2" />
<bean id="jobDetail_2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="job2" />
</property>
<property name="targetMethod">
<value>sayHello</value>
</property>
</bean>
<bean id="cronTrigger_2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="jobDetail_2" />
</property>
<property name="cronExpression">
<value>0/1 * * * * ?</value>
</property>
</bean>
<!-- 监听 -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="morningJobTrigger" />
<ref bean="cronTrigger_2" />
</list>
</property>
</bean>
</beans>
- 调度事务类即是java中的bean。
- 将事务类配置到事务方法中,targetMethod属性即是类中待执行的方法。concurrent属性为:对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将不会在第一个job完成之前开始
- 将JobDetail 加入到Trigger中,并指定执行时间
- 设置监听
public class Quartz {
public void check() {
System.out.println("定时任务");
}
}