spring整合quartz实现定时任务

时间:2023-03-08 16:59:21
spring整合quartz实现定时任务

需求:spring+mybatis框架已经搭建好,需要实现一个定时任务。

一:导出相应的jar包

quartz-all-1.6.5.jar获取quartz-alll-1.6.6.jar

spring-context-support.jar

二:配置applicationContext.xml文件

在<beans></beans>元素内配置如下内容

 <!--定时任务配置-->
<!-- 定义调用对象和方法,以及是否并发处理-->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzServiceImpl"/>
<property name="targetMethod" value="timeScan"/>
<property name="concurrent" value="false"/>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask"/>
<!-- cron表达式 -->
<property name="cronExpression">
<value>5,10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>

其中:

targetObject为定义的定时方法所在的类

targetMethod为定时方法,在方法中可以写入定时执行的任务

concurrent控制并发,如果value为false则表示不会并发执行,下一个job会推迟到上一个job执行结束

定义触发时间:

这里是在5秒、10秒........执行任务

三:写具体的类和定时方法

 /**
* @author Administrator 定时任务接口
*/
@Service("quartzServiceImpl")
public class QuartzServiceImpl implements QuartzService { /*
* (non-Javadoc)
*
* @see com.paic.service.QuartzService#timeScan() 定时扫描
*/
@Override
public void timeScan() {
/**
* 可以在这里写需要执行的任务
*/
System.out.println("hello world!!!" + CommonUtil.getCurrSysTime());
} }

这样,在定时方法中即可写入要执行的任务。