quartz作定时任务,以前使用过,可是当时没有作笔记,致使又折腾了一点时间 因为使用的是spring+hibernate的项目,使用maven管理包 maven配置以下:spring
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-quartz</artifactId> <version>${shiro.version}</version> <exclusions> <exclusion> <artifactId>quartz</artifactId> <groupId>org.opensymphony.quartz</groupId> </exclusion> </exclusions> </dependency>``` 因为使用的spring4,quartz包必须是2.0以上的,否则会有兼容问题。 在applicationContext.xml文件中添加以下代码:
<!--类路径 -->apache
<bean id="taskJob" class="com.test.QuartzJob" /> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_work" /> <property name="name" value="job_work_name" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="taskJob" /> </property> <property name="targetMethod"> <!--须要执行的方法 --> <value>work</value> </property> </bean> <!-- 调度触发器 --> <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="work_default_name" /> <property name="group" value="work_default" /> <property name="jobDetail"> <ref bean="jobDetail" /> </property> <property name="cronExpression"> <!--秒 分 时 天 月 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”表明从第 5 秒开始,每 15 秒一次。--> <!-- 天天0点和12点执行 --> <value>0 0 0/12 * * ?</value> </property> </bean> <!-- 调度工厂 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myTrigger" /> </list> </property> </bean> ``` quartz 时间配置就不细说了,网上一大堆。只需改本身的类路径和执行方法就能够了。 再添加一个定时任务 ``` <bean id="installJob" class="com.xb.job.InstallJob" /> <bean id="jobInstall" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="group" value="job_install" /> <property name="name" value="job_install_name" /> <!--false表示等上一个任务执行完后再开启新的任务 --> <property name="concurrent" value="false" /> <property name="targetObject"> <ref bean="installJob" /> </property> <property name="targetMethod"> <value>work</value> </property> </bean> <bean id="installTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="install_default_name" /> <property name="group" value="install_default" /> <property name="jobDetail"> <ref bean="jobInstall" /> </property> <property name="cronExpression"> <!--秒 分 时 天 月 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”表明从第 5 秒开始,每 15 秒一次。--> <!-- 正式环境使用,天天0点和12点执行 --> <!-- <value>0 30 0/12 * * ?</value> --> <!--开发环境使用,避免天天这个时间点都跑定时任务 --> <value>0 30 0,12 20 10 ?</value> </property> </bean> ```app