當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
Spring使用Quartz配置调度事务
生活随笔
收集整理的這篇文章主要介紹了
Spring使用Quartz配置调度事务
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package?QuartzTest;
import?java.util.Date;
public?class?CourseService?...{
???public?void?start()...{
???????System.out.println(new?Date().getSeconds());
???}
}
編寫(xiě)調(diào)度類,需要繼承QuartzJobBean : package?QuartzTest;
import?org.quartz.JobExecutionContext;
import?org.quartz.JobExecutionException;
import?org.springframework.scheduling.quartz.QuartzJobBean;
public?class?QuartzJob?extends?QuartzJobBean?...{????
????
????protected?void?executeInternal(JobExecutionContext?arg0)?throws?JobExecutionException?...{
????????courseService.start();
????}
????private?CourseService?courseService;
????public?CourseService?getCourseService()?...{
????????return?courseService;
????}
????public?void?setCourseService(CourseService?courseService)?...{
????????this.courseService?=?courseService;
????}
????
}
編寫(xiě)配置文件 需要說(shuō)明的是,我們有兩種trigger,分別是simple和cron模式,simple方式和timertask類似,采用設(shè)置interval方式進(jìn)行調(diào)度,而cron可以特有的語(yǔ)法很詳細(xì)的定制調(diào)度執(zhí)行時(shí)間,具體描述在配置文件的注釋中 <?xml?version="1.0"?encoding="UTF-8"?>
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"?>
<beans>
???<bean?id="courseService"?class="QuartzTest.CourseService"/>
???<!--?創(chuàng)建調(diào)度任務(wù)?使用單獨(dú)編寫(xiě)的調(diào)度類QuartzJob????-->
???<bean?id="reportJbo"?class="org.springframework.scheduling.quartz.JobDetailBean">
?????<property?name="jobClass">
???????<value>QuartzTest.QuartzJob</value>
?????</property>
?????<property?name="jobDataAsMap">
???????<map> ???????? <!--采用jobDataAsMap方式進(jìn)行courseService注入-->
?????????<entry?key="courseService">
???????????<ref?bean="courseService"/>
??????????</entry>
???????</map>
?????</property>
???</bean>
???<!--?創(chuàng)建調(diào)度任務(wù)?使用已有的service類方法,不需要單獨(dú)編寫(xiě)調(diào)度類QuartzJob?
???<bean?id="reportJbo"?class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
?????<property?name="targetObject">
??????<ref?bean="courseService"/>
?????</property>
?????<property?name="targetMethod">
????????<value>start</value>
?????</property>
???</bean>
????-->
???<!--?配置調(diào)度任務(wù),簡(jiǎn)單模式???-->
???<bean?id="simpleReportTrigger"?class="org.springframework.scheduling.quartz.SimpleTriggerBean">
??????<property?name="jobDetail">
????????<ref?bean="reportJbo"/>
??????</property>
??????<property?name="repeatInterval">
????????<value>1000</value>
??????</property>
???</bean>
?
???<!--?配置調(diào)度任務(wù),復(fù)雜定制模式,月份中的日期和星期不能同時(shí)設(shè)置???-->
???<bean?id="cronReportTrigger"?class="org.springframework.scheduling.quartz.CronTriggerBean">
??????<property?name="jobDetail">
????????<ref?bean="reportJbo"/>
??????</property>
??????<property?name="cronExpression">
????????<value>02?20?21?7?6???2007</value>?
????????<!--?1.秒?0-59
?????????????2.分鐘?0-59
?????????????3.小時(shí)?0-23
?????????????4.月份中的日期?1-31
?????????????5.月份?1-12或者Jan?Feb?Mar?Apr?May?Jun?Jul?Aug?Sept?Oct?Nov?Dec
?????????????6.星期中的日期?1-7或者M(jìn)ON,TUE,WED,THU,FRI,SAT,SUN.
????????-->
??????</property>
???</bean>
?
???<!--?啟動(dòng)調(diào)度?-->
???<bean?id="start"?class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
?????<property?name="triggers">
???????<list>
?????????<ref?bean="cronReportTrigger"/>
???????</list>
?????</property>
???</bean>
</beans>
Spring還為我們提供了更簡(jiǎn)單的加載調(diào)度的方式,也就說(shuō)我們?cè)谝呀?jīng)有業(yè)務(wù)方法CourseService時(shí)不需要再額外編寫(xiě)調(diào)度類QuartzJob,可以直接配置service的方法 <bean id="reportJbo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
???? <property name="targetObject">
????? <ref bean="courseService"/>
???? </property>
???? <property name="targetMethod">
??????? <value>start</value>
???? </property>
?? </bean>
import?java.util.Date;
public?class?CourseService?...{
???public?void?start()...{
???????System.out.println(new?Date().getSeconds());
???}
}
編寫(xiě)調(diào)度類,需要繼承QuartzJobBean : package?QuartzTest;
import?org.quartz.JobExecutionContext;
import?org.quartz.JobExecutionException;
import?org.springframework.scheduling.quartz.QuartzJobBean;
public?class?QuartzJob?extends?QuartzJobBean?...{????
????
????protected?void?executeInternal(JobExecutionContext?arg0)?throws?JobExecutionException?...{
????????courseService.start();
????}
????private?CourseService?courseService;
????public?CourseService?getCourseService()?...{
????????return?courseService;
????}
????public?void?setCourseService(CourseService?courseService)?...{
????????this.courseService?=?courseService;
????}
????
}
編寫(xiě)配置文件 需要說(shuō)明的是,我們有兩種trigger,分別是simple和cron模式,simple方式和timertask類似,采用設(shè)置interval方式進(jìn)行調(diào)度,而cron可以特有的語(yǔ)法很詳細(xì)的定制調(diào)度執(zhí)行時(shí)間,具體描述在配置文件的注釋中 <?xml?version="1.0"?encoding="UTF-8"?>
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"?>
<beans>
???<bean?id="courseService"?class="QuartzTest.CourseService"/>
???<!--?創(chuàng)建調(diào)度任務(wù)?使用單獨(dú)編寫(xiě)的調(diào)度類QuartzJob????-->
???<bean?id="reportJbo"?class="org.springframework.scheduling.quartz.JobDetailBean">
?????<property?name="jobClass">
???????<value>QuartzTest.QuartzJob</value>
?????</property>
?????<property?name="jobDataAsMap">
???????<map> ???????? <!--采用jobDataAsMap方式進(jìn)行courseService注入-->
?????????<entry?key="courseService">
???????????<ref?bean="courseService"/>
??????????</entry>
???????</map>
?????</property>
???</bean>
???<!--?創(chuàng)建調(diào)度任務(wù)?使用已有的service類方法,不需要單獨(dú)編寫(xiě)調(diào)度類QuartzJob?
???<bean?id="reportJbo"?class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
?????<property?name="targetObject">
??????<ref?bean="courseService"/>
?????</property>
?????<property?name="targetMethod">
????????<value>start</value>
?????</property>
???</bean>
????-->
???<!--?配置調(diào)度任務(wù),簡(jiǎn)單模式???-->
???<bean?id="simpleReportTrigger"?class="org.springframework.scheduling.quartz.SimpleTriggerBean">
??????<property?name="jobDetail">
????????<ref?bean="reportJbo"/>
??????</property>
??????<property?name="repeatInterval">
????????<value>1000</value>
??????</property>
???</bean>
?
???<!--?配置調(diào)度任務(wù),復(fù)雜定制模式,月份中的日期和星期不能同時(shí)設(shè)置???-->
???<bean?id="cronReportTrigger"?class="org.springframework.scheduling.quartz.CronTriggerBean">
??????<property?name="jobDetail">
????????<ref?bean="reportJbo"/>
??????</property>
??????<property?name="cronExpression">
????????<value>02?20?21?7?6???2007</value>?
????????<!--?1.秒?0-59
?????????????2.分鐘?0-59
?????????????3.小時(shí)?0-23
?????????????4.月份中的日期?1-31
?????????????5.月份?1-12或者Jan?Feb?Mar?Apr?May?Jun?Jul?Aug?Sept?Oct?Nov?Dec
?????????????6.星期中的日期?1-7或者M(jìn)ON,TUE,WED,THU,FRI,SAT,SUN.
????????-->
??????</property>
???</bean>
?
???<!--?啟動(dòng)調(diào)度?-->
???<bean?id="start"?class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
?????<property?name="triggers">
???????<list>
?????????<ref?bean="cronReportTrigger"/>
???????</list>
?????</property>
???</bean>
</beans>
Spring還為我們提供了更簡(jiǎn)單的加載調(diào)度的方式,也就說(shuō)我們?cè)谝呀?jīng)有業(yè)務(wù)方法CourseService時(shí)不需要再額外編寫(xiě)調(diào)度類QuartzJob,可以直接配置service的方法 <bean id="reportJbo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
???? <property name="targetObject">
????? <ref bean="courseService"/>
???? </property>
???? <property name="targetMethod">
??????? <value>start</value>
???? </property>
?? </bean>
轉(zhuǎn)載于:https://blog.51cto.com/czjmagod/275197
總結(jié)
以上是生活随笔為你收集整理的Spring使用Quartz配置调度事务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。