之前项目需要使用定时任务,所以简要的了解了一下,最后由于公司框架自带了定时任务服务,所以就直接用的公司框架的。在这里只是简单记录一下使用quartz实现定时任务的配置(具体框架为springmvc框架)。
使用quartz,需要导入相应的依赖。
然后在配置文件中配置相应的属性
<bean id="quartzJob" class="xxx.QuartzConfigTest" />
<!-- 5秒更新 -->
<!-- 任务一 -->
<bean id="rsh_jobDetail_1"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="quartzJob" />
</property>
<property name="targetMethod">
<value>work</value><!-- 需要执行的方法 -->
</property>
</bean>
<bean id="rsh_cronTrigger_1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="rsh_jobDetail_1" />
<property name="cronExpression">
<value>0/5 * * * * ?</value><!-- 使用cron表达式 -->
</property>
</bean>
如果想执行一个类中的多个方法,也需要按上述配置进行配置
执行第二个方法
<!-- 10秒更新 -->
<!-- 任务二 -->
<bean id="rsh_jobDetail_2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="quartzJob" />
</property>
<property name="targetMethod">
<value>work1</value>
</property>
</bean>
<bean id="rsh_cronTrigger_2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="rsh_jobDetail_2" />
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
最后在配置触发器
<!--触发器启动-->
<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="rsh_cronTrigger_1" />
<ref bean="rsh_cronTrigger_2" />
</list>
</property>
</bean>
执行类
public class QuartzConfigTest {
public void work() {
System.out.println("现在时间为:"+new Date());
}
public void work1() {
System.out.println("现在时间为:"+new Date());
}
}