日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Quartz总结(一):Quartz集成Spring的2个方法

發(fā)布時(shí)間:2025/3/19 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz总结(一):Quartz集成Spring的2个方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

零、引言

關(guān)于Spring集成Quartz有2種方法:

1. JobDetailBean.

2. MethodInvokeJobDetailFactoryBean.

以下從自身使用和理解以及掌握的知識(shí)對(duì)其進(jìn)行闡述。

需要注意的是,在使用Spring集成Quartz的時(shí)候,一定不要忘記引入spring-support這個(gè)包:

<!-- spring-support.jar 這個(gè)jar 文件包含支持UI模版(Velocity,FreeMarker,JasperReports),郵件服務(wù),腳本服務(wù)(JRuby), 緩存Cache(EHCache),任務(wù)計(jì)劃Scheduling(uartz)方面的類。 外部依賴spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache) --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.2.6.RELEASE</version></dependency>

它協(xié)助Spring集成了很多有用的第三方庫(kù),包括了郵件服務(wù)、定時(shí)任務(wù)、緩存等。。。

當(dāng)然也不要忘記引入Quart的jar包:

<!-- quartz定時(shí)任務(wù) --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.3</version></dependency>

一、JobDetailBean

1. 創(chuàng)建一個(gè)Job方法,此方法必須繼承QuartzJobBean或者實(shí)現(xiàn)Job方法。

public class TestJob extends QuartzJobBean { @Overrideprotected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {System.out.println(TimeUtils.getCurrentTime());} }

2. XML配置

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><property name="jobClass" value="com.mc.bsframe.job.TestJob"></property><property name="durability" value="true"></property></bean><bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="jobDetail" /><property name="startDelay" value="3000" /><property name="repeatInterval" value="2000" /></bean><!-- 總管理類 如果將lazy-init='false'那么容器啟動(dòng)就會(huì)執(zhí)行調(diào)度程序 --><bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><!-- 管理trigger --><property name="triggers"><list><ref bean="simpleTrigger" /></list></property></bean> </beans>

二、MethodInvokeJobDetailFactoryBean

1. 創(chuàng)建一個(gè)Job類,此類不需要繼承任何類或者實(shí)現(xiàn)任何接口:

package com.mc.bsframe.job;import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.TriggerKey; import org.quartz.impl.triggers.SimpleTriggerImpl; import org.springframework.beans.factory.annotation.Autowired;import com.mc.bsframe.service.TestService; import com.mc.bsframe.util.TimeUtils;public class TestJob2 {public void doSomething() {System.err.println("****:" + TimeUtils.getCurrentTime());}}

2. 配置XML

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 要執(zhí)行任務(wù)的任務(wù)類。 --><bean id="testQuartz" class="com.mc.bsframe.job.TestJob2"></bean><!-- 將需要執(zhí)行的定時(shí)任務(wù)注入JOB中。 --><bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="testQuartz"></property><!-- 任務(wù)類中需要執(zhí)行的方法 --><property name="targetMethod" value="doSomething"></property><!-- 上一次未執(zhí)行完成的,要等待有再執(zhí)行。 --><property name="concurrent" value="false"></property></bean><!-- 基本的定時(shí)器,會(huì)綁定具體的任務(wù)。 --><bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="testJob"></property><property name="startDelay" value="3000"></property><property name="repeatInterval" value="2000"></property></bean><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="testTrigger"></ref></list></property></bean> </beans>

綜上:定時(shí)任務(wù)的基本配置完成。

三、兩種方法的說明

使用QuartzJobBean,需要繼承。而使用MethodInvokeJobDetailFactoryBean則需要指定targetObject(任務(wù)實(shí)例)和targetMethod(實(shí)例中要執(zhí)行的方法)

后者優(yōu)點(diǎn)是無侵入,業(yè)務(wù)邏輯簡(jiǎn)單,一目了然,缺點(diǎn)是無法持久化(目前還不太清楚這點(diǎn)!)

從我使用的經(jīng)驗(yàn)來說,我更推薦的第二種其中一個(gè)很重要的原因就是因?yàn)槎〞r(shí)任務(wù)中注入相關(guān)Service的時(shí)候,后者可以直接注入,而前者還需要進(jìn)行Schedular的替換修改。

?

轉(zhuǎn)載于:https://www.cnblogs.com/LiuChunfu/p/5598610.html

總結(jié)

以上是生活随笔為你收集整理的Quartz总结(一):Quartz集成Spring的2个方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。