Spring 实战 (一) | Spring + quartz 实现定时任务
微信公众号:一个优秀的废人
如有问题或建议,请后台留言,我会尽力解决你的问题。
前言
很久不见,因为忙着泡妞,断更了一个月,实在是罪过。废话不多说,最近在工作中遇到了使用 quartz 实现定时任务的需求。写出来分享给大家,权当笔记。
Spring + quartz 实现定时任务
因为在开发中遇到的是非 Maven 的老项目,所以先介绍这种方式。这种实现方式更多的是 xml 的配置。
-
首先在 lib 目录下加入 quartz 这l两个jar包
-
Scheduler(任务调度器)的配置
在 applicationContext.xml 加入 Scheduler 的配置
<bean id="MyScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="MyTriggers"></ref>
</list>
</property>
<property name="autoStartup" value="true"></property>
</bean>
- Trigger(触发器)的配置,这里设置了逢5分钟的倍数执行一次
<bean id="MyTriggers"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="MyJobDetail"></property>
<property name="cronExpression">
<!--<value>0 */1 * * * ?</value>-->
<!--<value>0 */5 * * * ?</value>-->
<!-- 早上八点执行 -->
<!--<value>0 0 8 * * ?</value>-->
<!-- 逢5分钟的倍数执行一次 -->
<value>0 */5 * * * ?</value>
</property>
</bean>
- JobDetail(任务,即被调度的任务)的配置
<bean id="MyJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 执行的类 -->
<property name="targetObject" ref="MyJobService"></property>
<!-- 类中的方法 -->
<property name="targetMethod" value="doSomething"></property>
<property name="concurrent" value="false"/>
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
- 业务类的配置
<bean id="oltJobService" class="com.nasus.service.quartz.MyJobService">
<property name="MyDao" ref="MyDao" />
<!-- 注入属性 -->
</bean>
- 业务实现
import java.util.Date;
public class MyJobService {
public void doSomething() {
System.out.println("date: " + new Date().getTime());
}
}
- 启动项目就可以看到控制台每隔五分钟就打印一次当前时间
最后
如果看到这里,喜欢这篇文章的话,请转发、点赞。微信搜索「一个优秀的废人」,欢迎关注。
回复「1024」送你一套完整的 java、python、c++、go、前端、linux、算法、大数据、人工智能、小程序以及英语教程。
回复「电子书」送你 50+ 本 java 电子书。