當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Schema整合Quartz_01
生活随笔
收集整理的這篇文章主要介紹了
Spring Schema整合Quartz_01
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、實現思路
- 二、第一種實現方式
- 2.1. 新建web項目
- 2.2. 導入依賴
- 2.3. 創建一個job類
- 2.4. 創建配置文件
- 2.5. 配置web.xml
- 2.6.運行web服務,觀察Quartz定時任務
- 三、第二種實現方式
- 3.1. 創建job類
- 3.2. 修改spring-config.xml
- 3.3. 運行web服務,觀察Quartz定時任務
- 四、 附上配置文件內容
一、實現思路
1.新建web項目 2.導入依賴 3.配置web.xml實現方式有2種: 第一種: 1.新建job類繼承抽象類重寫executeInternal方法 2.在配置文件中配置jobDetail1屬性 3.配置trigger,并配置trigger對應的JobDetail 4.將trigger注冊到schedule中 5.運行web服務,觀察Quartz定時任務注: 配置jobDetail1屬性用的是 org.springframework.scheduling.quartz.JobDetailFactoryBean第二種: 1.新建job類 自定義方法 2.在配置文件中配置jobDetail1屬性 3.配置trigger,并配置trigger對應的JobDetail 4.將trigger注冊到schedule中 5.運行web服務,觀察Quartz定時任務注: 配置jobDetail1屬性用的是org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean再說一下trigger配置方式有2種: 第一種:簡單配置 org.springframework.scheduling.quartz.SimpleTriggerFactoryBean第二種:簡單配置 org.springframework.scheduling.quartz.CronTriggerFactoryBean實現方式推薦使用第二種,因為比較靈活 trigger配置方式推薦使用第二種二、第一種實現方式
2.1. 新建web項目
2.2. 導入依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>spring-quartz</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>spring-quartz</name><url>http://www.gblfy.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><spring.version>5.2.8.RELEASE</spring.version></properties><dependencies><!--spring 相關依賴 start--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!--spring 相關依賴 end--><!--quartz 依賴--><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.1</version></dependency></dependencies><build><finalName>spring-quartz</finalName><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><executions><execution><id>tomcat-run</id><goals><goal>exec-war-only</goal></goals><phase>package</phase><configuration><path>/</path></configuration></execution></executions></plugin></plugins></build> </project>2.3. 創建一個job類
使用JobDetailFactoryBean 繼承QuartzJobBean抽象類
package com.gblfy.job;import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import java.time.LocalTime;/*** 第1種 實現方式*/ public class MyJob extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {LocalTime localTime = LocalTime.now();System.out.println("我MyJob正在執行"+localTime.toString());} }2.4. 創建配置文件
spring-config.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--第1種--><bean id="jobDetail1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><property name="jobClass" value="com.gblfy.job.MyJob"/><property name="name" value="myJob1"/><property name="group" value="group1"/></bean><!--觸發器1--><bean id="tigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="jobDetail1"/><property name="name" value="tigger1"/><property name="group" value="group1"/><property name="repeatInterval" value="5000"/></bean><!--將觸發器注冊到 schedule--><bean id="schedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="tigger1"/></list></property></bean> </beans>2.5. 配置web.xml
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring-config.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> </web-app>2.6.運行web服務,觀察Quartz定時任務
三、第二種實現方式
在第一種實現方式的基礎上,修改第3和4步即可
3.1. 創建job類
使用MethodInvikingJobDetailFactoryBean(比較靈活)
創建job類
3.2. 修改spring-config.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--第2種--><bean id="myJob2" class="com.gblfy.job.MyJob2"></bean><bean id="jobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="name" value="myJob2"/><property name="group" value="group1"/><property name="targetObject" ref="myJob2"/><property name="targetMethod" value="excute"/></bean><!--觸發器2--><bean id="tigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="jobDetail2"/><property name="name" value="tigger2"/><property name="group" value="group1"/><property name="cronExpression" value="0/8 * * * * ?"/></bean><!--將觸發器注冊到 schedule--><bean id="schedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="tigger2"/></list></property></bean> </beans>3.3. 運行web服務,觀察Quartz定時任務
四、 附上配置文件內容
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--第1種--><bean id="jobDetail1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><!--指定執行的job類--><property name="jobClass" value="com.gblfy.job.MyJob"/><!--下面2個屬性拼在一起 指定執行job唯一標識可以理解為:哪個組的哪個任務--><property name="name" value="myJob1"/><property name="group" value="group1"/></bean><!--第2種--><bean id="myJob2" class="com.gblfy.job.MyJob2"></bean><bean id="jobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><!--下面2個屬性拼在一起 指定執行job唯一標識可以理解為:哪個組的哪個任務--><property name="name" value="myJob2"/><property name="group" value="group1"/><!--指定執行的job的類--><property name="targetObject" ref="myJob2"/><!--如果執行的job類中的方法為靜態簡言之:static 修飾excute方法 使用--><!-- <property name="targetClass" value="com.gblfy.job.MyJob2"/>--><!--指定執行的job的類中的方法 非靜態--><property name="targetMethod" value="excute"/></bean><!--觸發器1--><bean id="tigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><!--配置jobDetail 屬性信息--><property name="jobDetail" ref="jobDetail1"/><!--指定觸發器--><property name="name" value="tigger1"/><!--指定組信息 --><property name="group" value="group1"/><!--觸發規則 間隔5秒執行一次--><property name="repeatInterval" value="5000"/></bean><!--觸發器2--><bean id="tigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><!--配置jobDetail 屬性信息--><property name="jobDetail" ref="jobDetail2"/><!--指定觸發器--><property name="name" value="tigger2"/><!--組信息 --><property name="group" value="group1"/><!--觸發規則 間隔8秒執行一次--><property name="cronExpression" value="0/8 * * * * ?"/></bean><!--將觸發器注冊到 schedule--><bean id="schedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><!--配置觸發器 列表--><ref bean="tigger1"/><ref bean="tigger2"/></list></property></bean> </beans>總結
以上是生活随笔為你收集整理的Spring Schema整合Quartz_01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThreadPoolExecutor中的
- 下一篇: Keepalived时主备负载均衡器都有