本篇文章给大家谈谈javarepeatinterval,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、如何编写一个定时调度java程序2、求助:Java spring quartz 异常: Context initialization failed3、java如何根据设定的时间 动态开启定时器4、用java的Quartz包定时调用方法,我想实现每隔一个半小时调用一次方法, 请问Corn表达式怎么写?
如何编写一个定时调度java程序
目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。
1.Java Timer定时
首先继承java.util.TimerTask类实现run方法
import java.util.TimerTask;
public class EmailReportTask extends TimerTask{
@Override
public void run() {
…
}
}
在Spring定义
…
配置Spring定时器
bean id=”scheduleReportTask” class=”org.springframework.scheduling.timer.ScheduledTimerTask”
property name=”timerTask” ref=”reportTimerTask” /
property name=”period”
value86400000value
property
bean
timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时
启动Spring定时器
Spring的TimerFactoryBean负责启动定时任务
bean class=”org.springframework.scheduling.timer.TimerFactoryBean”
property name=”scheduledTimerTasks”
listref bean=”scheduleReportTask”/list
property
bean
scheduledTimerTasks里显示一个需要启动的定时器任务的列表。
可以通过设置delay属性延迟启动
bean id=”scheduleReportTask” class=”org.springframework.scheduling.timer.ScheduledTimerTask”
property name=”timerTask” ref=”reportTimerTask” /
property name=”period”
value86400000value
property
property name=”delay”
value3600000value
property
bean
这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动
2.Quartz定时器
首先继承QuartzJobBean类实现executeInternal方法
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class EmailReportJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
…
}
}
在Spring中定义
bean id=”reportJob” class=”org.springframework.scheduling.quartz.JobDetailBean”
property name=”jobClass”
valueEmailReportJobvalue
property
property name=”jobDataAsMap”
map
entry key=”courseService”
ref bean=”courseService”/
entry
map
property
bean
在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。
使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。
启动定时器
Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。
SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .
bean id=”simpleReportTrigger” class=”org.springframework.scheduling.quartz.SimpleTriggerBean”
property name=”jobDetail” ref=”reprotJob” /
property name=”startDelay”
value360000value
property
property name=”repeatInterval”
value86400000value
property
bean
startDelay也是延迟1个小时启动
CronTriggerBean指定工作的准确运行时间
bean id=”cronReportTrigger” class=”org.springframework.scheduling.quartz.CronTriggerBean”
property name=”jobDetail” ref=”reprotJob” /
property name=”cronExpression”
value0 0 6 * * ?value
property
bean
属性cronExpression告诉何时触发。最神秘就是cron表达式:
Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:
1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)
每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。
启动定时器
bean class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”
property name=”triggers”
listref bean=”cronReportTrigger”/list
property
bean
triggers属性接受一组触发器。
求助:Java spring quartz 异常: Context initialization failed
——————————————–
看下面这段错误信息,意思很明显啊,就是targetObject引用的QuartzTask没有定义,将QuartzTask这个bean定义一下就可以了。还有问题的话就直接百度HI我好了。
Cannot resolve reference to bean ‘QuartzTask’ while setting bean property ‘targetObject’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘QuartzTask’ is defined
——————————————————
java如何根据设定的时间 动态开启定时器
beans xmlns=”” xmlns:xsi=””
xsi:schemaLocation=”
“
!– 调度工厂 —
bean class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”
autowire=”no”
property name=”triggers”
list
ref bean=”simpletriggerbean” /
ref bean=”cronTriggerBean” /
/list
/property
/bean
bean id=”jmsQueueService” class=”com.lehecai.push.service.JMSQueueService”
property name=”jmsTemplate” ref=”jmsTemplate” /
/bean
!– 方式一 —
bean id=”quantzjobBean” class=”org.springframework.scheduling.quartz.JobDetailBean”
property name=”jobClass”
valuecom.lehecai.push.timer.PushTaskJobBean/value
/property
property name=”jobDataAsMap”
map
entry key=”jmsQueueService” value-ref=”jmsQueueService” /
entry key=”pushTaskDao” value-ref=”pushTaskService” /
entry key=”pushTaskDeviceDao” value-ref=”pushTaskDeviceService” /
/map
/property
/bean
bean id=”simpletriggerbean” class=”org.springframework.scheduling.quartz.SimpleTriggerBean”
property name=”jobDetail” ref=”quantzjobBean” /
property name=”startDelay” value=”3000″ /
property name=”repeatInterval” value=”10000″ /
!–
property name=”repeatCount” value=”-1″ /
—
/bean
bean id=”springQtzJobMethod”
class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”
property name=”targetObject”
bean class=”com.lehecai.push.service.EtlToolService” /
/property
property name=”targetMethod”
valueexecuteTask/value
/property
/bean
bean id=”cronTriggerBean” class=”org.springframework.scheduling.quartz.CronTriggerBean”
property name=”jobDetail” ref=”springQtzJobMethod”/property
property name=”cronExpression” value=”0 0 4,17 * * ?”/property
/bean
/beans
两种办法哪种都行,关键字都在上边了。
用java的Quartz包定时调用方法,我想实现每隔一个半小时调用一次方法, 请问Corn表达式怎么写?
结合spring框架写的
bean id=”cronTriggerPay”
class=”org.springframework.scheduling.quartz.CronTriggerBean”
property name=”jobDetail”
!– 使用嵌套Bean的方式来定义任务Bean —
bean
class=”org.springframework.scheduling.quartz.JobDetailBean”
!– 指定任务Bean的实现类 —
property name=”jobClass”
value=”org.seu.yto.schedule.PayJob”/
!– 为任务Bean注入属性 —
property name=”jobDataAsMap”
map
entry key=”empMgr” value-ref=”empManager”/
/map
/property
/bean
/property
!– 指定Cron表达式:每月1日6点启动 —
property name=”cronExpression” value=”0 0 6 1 * ? *”/
/bean
!– 定义触发器来管理任务Bean —
bean id=”cronTriggerPunch”
class=”org.springframework.scheduling.quartz.CronTriggerBean”
property name=”jobDetail”
!– 使用嵌套Bean的方式来定义任务Bean —
bean
class=”org.springframework.scheduling.quartz.JobDetailBean”
!– 指定任务Bean的实现类 —
property name=”jobClass”
value=”org.seu.yto.schedule.PunchJob”/
!– 为任务Bean注入属性 —
property name=”jobDataAsMap”
map
entry key=”empMgr” value-ref=”empManager”/
/map
/property
/bean
/property
!– 指定Cron表达式:周一到周五8点、12点执行调度 —
property name=”cronExpression”
value=”0 0 8,12 ? * MON-FRI”/
/bean
!– 执行实际的调度调度 —
bean
class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”
property name=”triggers”
list
ref local=”cronTriggerPay”/
ref local=”cronTriggerPunch”/
/list
/property
/bean
javarepeatinterval的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javarepeatinterval的信息别忘了在本站进行查找喔。