请问quartz定时的问题. 我想定两个调度1 要每天每隔2小时重复一次,interval怎么设置?2 要每天8、12、18点重复一次,interval怎么设置? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主看看这篇文章,是否有帮助实践Quartz定时任务方式大全 最近需要用到Quartz进行定时任务功能,通过近期研究发现,spring已经很好的集成Quartz,它主要是屏蔽了Quartz底层一些配置,使开发人员可以几乎不受到任何限制就能够利用Quartz进行定时任务的工作,这里主要是通过实例的方式对利用Spring进行Quartz定时开发的两种方式进行讲解。1、功能需求 需要每个30秒对系统指定目录进行扫描,把符合条件的文件进行解析入库工作,这里只提取出有关顶事任务的内容2、研究一下Spring+Quartz结合方式,大体有两种方式可以达到定时任务功能2.1 借助于Spring的org.springframework.scheduling.quartz.JobDetailBean的类功能,继承Spring封装Quartz的org.springframework.scheduling.quartz.QuartzJobBean类,要实现executeInternal方法,并把其中涉及到需要定时任务处理的功能放入其中Spring配置如下: 1 2 <bean id="saveProjectJob" 3 class="org.springframework.scheduling.quartz.JobDetailBean"> 4 <property name="jobClass"> 5 <value> 6 com.gresoft.components.fileupload.service.ParseFileQuartz 7 </value> 8 </property> 9 <property name="jobDataAsMap">10 <map>11 <entry key="readXmlService">12 <ref bean="readXmlService" />13 </entry>14 </map>15 </property>16 </bean>17 <bean id="saveCron"18 class="org.springframework.scheduling.quartz.CronTriggerBean">19 <property name="jobDetail">20 <ref local="saveProjectJob" />21 </property>22 <property name="cronExpression">23 <value>0/30 * * * * ?</value>24 </property>25 </bean>26 <bean id="scheduler"27 class="org.springframework.scheduling.quartz.SchedulerFactoryBean">28 <property name="triggers">29 <ref local="saveCron" />30 </property>31 </bean>注意上述红色字体<map>结点,这里主要是为了在定时任务需要使用到Bean,通过Spring给注入进来,如果不写明,就会报java.lang.NullPointerException错误,主要是因为没有注入Bean方法代码如下: 1package com.gresoft.components.fileupload.service; 2 3import org.quartz.JobExecutionContext; 4import org.quartz.JobExecutionException; 5import org.springframework.scheduling.quartz.QuartzJobBean; 6 7public class ParseFileQuartz extends QuartzJobBean { 8 private readXmlService readXmlService; 910 @Override11 protected void executeInternal(JobExecutionContext jobexecutioncontext)12 throws JobExecutionException {13 // TODO Auto-generated method stub14 // System.out.println(genderManager.get(1).getGenderName());15 readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");16 }1718 public void setReadXmlService(readXmlService readXmlService) {19 this.readXmlService = readXmlService;20 }21}222.2 借助于Spring 的org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类,使用此方法使开发人员对Quartz完全透明,需要实现定时任务的方法只是一个普通方法Spring配置文件如下: 1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> 3<beans> 4 5 <bean id="saveProjectJob" 6 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 7 <property name="targetObject"> 8 <ref local="parseQuartz" /> 910 </property>11 <property name="targetMethod">12 <value>execute</value>13 </property>141516 </bean>17 <bean id="parseQuartz" class="com.gresoft.components.fileupload.service.ParseFileQuartzOther">18 <property name="readXmlService" ref="readXmlService" />19 </bean> 20<bean id="saveCron"21 class="org.springframework.scheduling.quartz.CronTriggerBean">22 <property name="jobDetail">23 <ref local="saveProjectJob" />24 </property>25 <property name="cronExpression">26 <value>0/30 * * * * ?</value>27 </property>28 </bean>29 <bean id="scheduler"30 class="org.springframework.scheduling.quartz.SchedulerFactoryBean">31 <property name="triggers">32 <ref local="saveCron" />33 </property>34 </bean>35业务代码如下: 1package com.gresoft.components.fileupload.service; 2 3public class ParseFileQuartzOther { 4 private readXmlService readXmlService; 5 6 7 public void execute(){ 8 // TODO Auto-generated method stub 9 // System.out.println(genderManager.get(1).getGenderName());10 readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");11 }1213 public void setReadXmlService(readXmlService readXmlService) {14 this.readXmlService = readXmlService;15 }16}17以上就是结合Spring使用Quartz编写定时任务两种方式,Spring很好的封装使用Quartz的细节,第一种方式是利用SPring封装的Quartz类进行特定方法的实现,第二种是通过透明的使用Quartz达到定时任务开发的目的,总体说第二种对开发人员更方便! 看的一本书上代码,问题见注释 serialVersionUID问题 java 拆分字符串 XML问题[WebService] java小问题 关于三元运算符的疑问!求指点 如何配置Tomcat才能连接MySQL? 装什么? Thread中的Blocking是什么意思?有什么作用?并举个例子说明 jdbc:odbc出错,很简单的啦 在线等,关于cardlayout的问题! 问一个 继承comparable对象 的数组的问题。
实践Quartz定时任务方式大全
最近需要用到Quartz进行定时任务功能,通过近期研究发现,spring已经很好的集成Quartz,它主要是屏蔽了Quartz底层一些配置,使开发人员可以几乎不受到任何限制就能够利用Quartz进行定时任务的工作,这里主要是通过实例的方式对利用Spring进行Quartz定时开发的两种方式进行讲解。1、功能需求 需要每个30秒对系统指定目录进行扫描,把符合条件的文件进行解析入库工作,这里只提取出有关顶事任务的内容2、研究一下Spring+Quartz结合方式,大体有两种方式可以达到定时任务功能2.1 借助于Spring的org.springframework.scheduling.quartz.JobDetailBean的类功能,继承Spring封装Quartz的org.springframework.scheduling.quartz.QuartzJobBean类,要实现executeInternal方法,并把其中涉及到需要定时任务处理的功能放入其中
Spring配置如下: 1
2 <bean id="saveProjectJob"
3 class="org.springframework.scheduling.quartz.JobDetailBean">
4 <property name="jobClass">
5 <value>
6 com.gresoft.components.fileupload.service.ParseFileQuartz
7 </value>
8 </property>
9 <property name="jobDataAsMap">
10 <map>
11 <entry key="readXmlService">
12 <ref bean="readXmlService" />
13 </entry>
14 </map>
15 </property>
16 </bean>
17 <bean id="saveCron"
18 class="org.springframework.scheduling.quartz.CronTriggerBean">
19 <property name="jobDetail">
20 <ref local="saveProjectJob" />
21 </property>
22 <property name="cronExpression">
23 <value>0/30 * * * * ?</value>
24 </property>
25 </bean>
26 <bean id="scheduler"
27 class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
28 <property name="triggers">
29 <ref local="saveCron" />
30 </property>
31 </bean>
注意上述红色字体<map>结点,这里主要是为了在定时任务需要使用到Bean,通过Spring给注入进来,如果不写明,就会报
java.lang.NullPointerException错误,主要是因为没有注入Bean
方法代码如下: 1package com.gresoft.components.fileupload.service;
2
3import org.quartz.JobExecutionContext;
4import org.quartz.JobExecutionException;
5import org.springframework.scheduling.quartz.QuartzJobBean;
6
7public class ParseFileQuartz extends QuartzJobBean {
8 private readXmlService readXmlService;
9
10 @Override
11 protected void executeInternal(JobExecutionContext jobexecutioncontext)
12 throws JobExecutionException {
13 // TODO Auto-generated method stub
14 // System.out.println(genderManager.get(1).getGenderName());
15 readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");
16 }
17
18 public void setReadXmlService(readXmlService readXmlService) {
19 this.readXmlService = readXmlService;
20 }
21}
222.2 借助于Spring 的org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类,使用此方法使开发人员对Quartz完全透明,需要实现定时任务的方法只是一个普通方法Spring配置文件如下: 1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
3<beans>
4
5 <bean id="saveProjectJob"
6 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
7 <property name="targetObject">
8 <ref local="parseQuartz" />
9
10 </property>
11 <property name="targetMethod">
12 <value>execute</value>
13 </property>
14
15
16 </bean>
17 <bean id="parseQuartz" class="com.gresoft.components.fileupload.service.ParseFileQuartzOther">
18 <property name="readXmlService" ref="readXmlService" />
19 </bean>
20<bean id="saveCron"
21 class="org.springframework.scheduling.quartz.CronTriggerBean">
22 <property name="jobDetail">
23 <ref local="saveProjectJob" />
24 </property>
25 <property name="cronExpression">
26 <value>0/30 * * * * ?</value>
27 </property>
28 </bean>
29 <bean id="scheduler"
30 class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
31 <property name="triggers">
32 <ref local="saveCron" />
33 </property>
34 </bean>
35
业务代码如下: 1package com.gresoft.components.fileupload.service;
2
3public class ParseFileQuartzOther {
4 private readXmlService readXmlService;
5
6
7 public void execute(){
8 // TODO Auto-generated method stub
9 // System.out.println(genderManager.get(1).getGenderName());
10 readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");
11 }
12
13 public void setReadXmlService(readXmlService readXmlService) {
14 this.readXmlService = readXmlService;
15 }
16}
17以上就是结合Spring使用Quartz编写定时任务两种方式,Spring很好的封装使用Quartz的细节,第一种方式是利用SPring封装的Quartz类进行特定方法的实现,第二种是通过透明的使用Quartz达到定时任务开发的目的,总体说第二种对开发人员更方便!