如何在spring中配置定时任务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在spring中配置定时任务相关的知识,希望对你有一定的参考价值。

参考技术A 一、在web.xml文件中进行如下配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext-*.xml
</param-value>
</context-param>
那么需要在工程下创建一个以applicationContext- 为开头的xml文件eg:applicationContext-jobconfig.xml
xml的头和结尾部分跟其他spring配置文件相似,就不赘述,正文如下:
<bean id="youJobName(类别名)" class="com.******.YourJobClassLocation(类的定位)" />
<bean id="doYourJob(别名)" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="youJobName(类别名)""/>
</property>
<property name="targetMethod">
<value>runMethodName(定时执行的方法名)</value>
</property>
</bean>

<bean id="youJobNameTrigger(触发器别名)" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="doYourJob(别名)""/>
</property>
<property name="cronExpression">
<value>0 0/20 * * * ?(定时的时间配置)</value>
</property>
</bean>
<bean id="doScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="youJobNameTrigger(触发器别名)"/>
</list>
</property>
</bean>
这样的配置几本就可以运转了,但是有一个地方可能是你需要根据你的需求来确定的,那就是触发时间。
下面有一些关于时间配置的说明:
<value>0 0/20 * * * ?</value>
按顺序 <value> 秒 分 小时 日期 月份 星期 年 </value>

字段顺序

允许值

允许的特殊字符

秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /本回答被提问者采纳

Spring使用@Scheduled注解配置定时任务

参考技术A

项目中经常会用到定时任务。所以在这里总结一下在SSM框架中如何配置定时任务。
1、在spring的配置文件spring.xml(文件名可以任意)中增加如下配置
1):spring配置文件加入头部加入

2):spring配置文件加入定时任务注解配置

3):spring配置文件加入定时任务扫描包

4):spring配置文件加入配置定时任务的线程池。因为spring的定时任务默认是单线程,多个任务执行起来时间会有问题。

2、在package com.sc.api下新增定时任务相关类ScheduledApiTest
调用的两种方式:
@Scheduled注解为定时任务,@Component 把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
1):如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,以下方法将以一个固定速率1分钟来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后1分钟再次调用。
@Scheduled(fixedRate = 1000 60 30) //心跳更新。启动时执行一次,之后每隔1分钟执行一次

2):如果你需要在特定的时间执行,就需要用到cron,cron表达式里为执行的时机
@Scheduled(cron = "0 34 13 * * ?") //每天的13点30分执行一次。

3、启动tomcat服务,定时任务就会按时执行。
关于CRON表达式 含义

以上是关于如何在spring中配置定时任务的主要内容,如果未能解决你的问题,请参考以下文章

如何在spring中配置定时任务

如何在spring中配置定时任务

如何在spring中配置定时任务

Spring使用@Scheduled注解配置定时任务

spring配置定时任务设置为每天凌晨2点执行和每小时执行一次如何配置。

spring实现动态定时任务