spring定时任务(利用Quartz实现)

本文介绍两种在Spring中配置定时任务的方法:基于XML配置和使用注解的方式。文章详细解释了如何通过XML配置文件和注解来实现定时任务,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 本文分享两个实现定时任务的方式:基于XML和Annotation的方式

 首先,添加Quartz的jar包,可以在Quartz的官网上下载(http://www.quartz-scheduler.org/),需要加入quartz-2.2.1.jar和quartz-jobs-2.2.1.jar,具体版本自己视情况而定。

 第一种方式:基于XML

  创建我们的定时任务类,代买如下:

@Component
public class Demo{

	public void testSchedule(){
		System.out.println("===========定时============");
	}
	
}

 配置文件:

<!-- 定时任务 -->
 <!-- 对应的定时类-->
 <bean id="testScheduler" class="com.test.Demo"></bean>
 <bean id="testSchedulerTask" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
   <property name="jobDetail">
    <bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	<property name="targetObject" ref="testScheduler" />
	<property name="targetMethod" value="testSchedule" /><!-- 需要 定时执行的方法 -->
    </bean>
   </property>
   <property name="cronExpression" value="0 0 23 * * ?" /><!-- 设置定时周期 -->
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="triggers">
     <list>
	 <ref bean="testSchedulerTask"/>
     </list>
 </property>
</bean> 

 这样我们就配置完成了,可以运行程序测试一下。

下面我们看看第二种方式:基于注解(我们以Spring 4.0为例)

首页在 xml的beans 的添加task的xmlns和xsi:
   xmlns:task="http://www.springframework.org/schema/task"  
   xsi:schemaLocation="http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task-4.0.xsd"


添加扫描组件
    <!-- 扫描 定时任务的 所在的包 -->
    <context:component-scan base-package="com.test" />
    <!-- 启动task注解 -->
    <task:annotation-driven/>
    <context:annotation-config/>  
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 

再看看 我们的 定时任务类

@Component
public class Demo {

	@Scheduled(cron="0/5 * *  * * ? ")   //每5秒执行一次  
	public void testScheduler(){
		System.out.println("===========定时============");
	}
	
}

这样就配置成功了,可以测试一下。


附:CronTrigger配置格式:
格式: [秒] [分] [小时] [日] [月] [周] [年]

序号 说明 是否必填 允许填写的值 允许的通配符
1       秒      是      0-59 ,         - * /
2      分       是      0-59 ,        - * /
3     小时    是      0-23 ,       - * /
4     日        是      1-31 ,      - * ? / L W
5     月        是      1-12 or JAN-DEC , - * /
6     周        是      1-7 or SUN-SAT , - * ? / L #
7     年        否      empty 或 1970-2099 , - * /

常用示例:
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值