这几天项目要求做一个任务调度的,在规定的时间运行一次程序检查数据库。
研究决定使用quartz来实现,如果是一般的话,使用quartz要做一大堆的配置。但是现在我们有了spring,一切都更简单了。
1. 首先编写实现的类,这个类可以是独立不需要继承至quartz,类名为:com.ferly.web.task.SmsSendTask
2. 编写spring的配置文件如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="SmsSendTask" class="com.ferly.web.task.SmsSendTask"><!-- look,这个就是我们刚刚写的执行任务的类了 -->
</bean>
<!-- 其他的配置和正常的sping配置文件一个意思 -->
<bean id="SmsSendTaskDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject"><ref bean="SmsSendTask"/></property>
<property name="targetMethod"><value>SmsSend</value></property>
</bean>
<bean id="SmsSendTaskScheduledTask" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- start the task 0:0:0 every day-->
<!-- Seconds Minutes Hours Day-of-Month Month Day-of-Week -->
<property name="cronExpression">
<value>0 0 0 * * ?</value><!-- 这里指定运行的参数,现在指定是每天天的0点准时执行 -->
</property>
<property name="jobDetail">
<ref bean="SmsSendTaskDetail"/>
</property>
</bean>
<bean id="SmsSendTaskFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean="SmsSendTaskScheduledTask"/></list>
</property>
</bean>
</beans>
3。完工。
简单吧,让我们对spring敬礼,并说:“spring,我爱你,真的!”。
4. 补充,如果你使用的不是固定时间执行,而是隔几分钟或者几小时执行的话,就会有一点修改的地方:
<bean id="SmsSendTaskScheduledTask" class="org.springframework.scheduling.quartz.CronTriggerBean">这之间的内容改为:
<bean id="SmsSendTaskScheduledTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="startDelay">
<value>60000</value><!-- 服务启动一分钟后执行 -->
</property>
<property name="repeatInterval">
<value>6000</value><!-- 每隔1分钟执行一次 -->
</property>
<property name="jobDetail">
<ref bean="SmsSendTaskDetail"/>
</property>
</bean>
quartz结合spring轻松实现任务调度
最新推荐文章于 2021-10-21 16:46:09 发布