Spring集成Quartz定时任务框架介绍和Cron表达式分析
发布时间:2021-11-21 19:41:31 所属栏目:教程 来源:互联网
导读:在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。 我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。 使用Quartz框架无疑是非常好的选
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。 我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。 使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍。 一、增加所依赖的JAR包 1、增加Spring的Maven依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.5.RELEASE</version> </dependency> 2、增加Quartz的Maven依赖 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.4</version> </dependency> 二、增加定时业务逻辑类 publicclass ExpireJobTask { /** Logger */ privatestaticfinal Logger logger = LoggerFactory.getLogger(ExpireJobTask.class); /** * 业务逻辑处理 */ publicvoid doBiz() { // 执行业务逻辑 // ........ } } ExpireJobTask业务逻辑类与一般普通的类没有任务区别,它定义的doBiz方法即为调度业务方法。 三、增加Spring配置 1、增加一个线程池 <!-- 线程执行器配置,用于任务注册 --> <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10"/> <property name="maxPoolSize" value="100"/> <property name="queueCapacity" value="500"/> </bean> 2、定义业务逻辑处理类 <!-- 业务对象 --> <bean id="bizObject" class="com.aboy.potak.common.toolkit.scheduling.ExpireJobTask"/> 3、增加调度业务逻辑 <!-- 调度业务 --> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="bizObject"/> <property name="targetMethod" value="doBiz"/> </bean> 上面的配置中,我们以bizObject.doBiz方法为将要调度的业务执行逻辑。 4、增加调度触发器 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetail"/> <property name="cronExpression" value="10 0/1 * * * ?"/> </bean> Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次。 <bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="jobDetail"/> <property name="startDelay" value="10000"/> <property name="repeatInterval" value="60000"/> </bean> 该调度表示,延迟10秒启动,然后每隔1分钟执行一次。 5、增加调度 <!-- 设置调度 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger"/> </list> </property> <property name="taskExecutor" ref="executor"/> </bean> triggers属性中,我们可以增加多个触发器。 到此,Spring已经与Quartz完美的结合了,我们接下来的工作就是启动系统,开始调度了。 ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |