Spring集成quartz配置思路:
·定义job: 有两种方式。方式一:Spring使用JobDetailBean类,继承QuartzJobBean,重写
protected void executeInternal(JobExecutionContext context)方法,
注入这个类和其依赖关系
方式二:Spring使用MethodInvokingJobDetailFactoryBean,
任何一个普通类都可,
注入这个类,还有那个方法要定时
·将job放到触发器中,并定义什么时候触发
·将触发器加入触发列表,触发列表可以自动启动触发器
举例(来源于Spring2.5的sample):
1. schedulingContext-quartz.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 第一种定义job的方式:定义一个job ListImagesQuartzJob -->
<bean id="listImagesJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="samples.imagedb.scheduling.ListImagesQuartzJob"/>
<!-- 列出这个job的依赖组件 -->
<property name="jobDataAsMap">
<map>
<entry key="imageDatabase" value-ref="imageDatabase"/>
<entry key="mailSender" value-ref="mailSender"/>
<entry key="mailFrom" value="${mail.from}"/>
<entry key="mailTo" value="${mail.to}"/>
</map>
</property>
</bean>
<!-- 把上面的job加入到触发器 -->
<bean id="listImagesTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="listImagesJobDetail"/>
<property name="startDelay" value="10000"/><!--第一次执行在10秒后-->
<property name="repeatInterval" value="10000"/><!--频度,每10秒执行一次-->
</bean>
<!-- 普通类配置,该类job会使用 -->
<bean id="imageDatabase" class="samples.imagedb.DefaultImageDatabase">
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="${imageDatabase.lobHandler}"/>
</bean>
<!--第二种定义job的方法:对已有类的某个方法,定义一个job,让它定时执行-->
<bean id="checkImagesJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="imageDatabase"/>
<property name="targetMethod" value="checkImages"/>
</bean>
<!-- 把上面的job加入到触发器 -->
<bean id="checkImagesTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="checkImagesJobDetail"/>
<property name="cronExpression" value="0/5 * * * * ?"/><!--精确地控制任务的运行时间-->
</bean>
<!-- 将触发器加入触发列表,将自动启动job-->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="listImagesTrigger"/>
<ref local="checkImagesTrigger"/>
</list>
</property>
</bean>
</beans>
2. ListImagesQuartzJob.java
public class ListImagesQuartzJob extends QuartzJobBean {
private final Log logger = LogFactory.getLog(getClass());
private ImageDatabase imageDatabase;
private MailSender mailSender;
private String mailFrom;
private String mailTo;
public void setImageDatabase(ImageDatabase imageDatabase) {
this.imageDatabase = imageDatabase;
}
public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
}
public void setMailFrom(String mailFrom) {
this.mailFrom = mailFrom;
}
public void setMailTo(String mailTo) {
this.mailTo = mailTo;
}
protected void executeInternal(JobExecutionContext context) {
//定义job内容
}
}
3. DefaultImageDatabase.java
public class DefaultImageDatabase {
//其他方法
public void checkImages() {
// job内容
}
}
cronExpression配置说明见http://yang7551735.iteye.com/blog/545397
分享到:
相关推荐
spring 集成quartz定时任务 用数据库实现quartz的集群
NULL 博文链接:https://vista-move.iteye.com/blog/2274246
Spring集成Quartz的代码示例,可轻松实现可配置JAVA定时任务。
spring集成quartz支持的扩展jar包,spring版本4.0.3
spring和quartz1.x及quartz2.x集成,具体见博客
spring+quartz demo,下载后即可运行,很强大哦....
spring集成quartz使用需要的jar包下载。
这个是spring 和 quartz的集成,quartz是单独的包,java线程的方式运行,利用自定义Jobfactory来解决spring注入service空指针的问题,简单实例执行main方法即可,很实用
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考http://www.blogjava.net/baoyaer/articles/155645.html 博客信息 看此代码,项目里分为两大块,com文件夹下 为上面博客相关学习...
Spring 集成 Quartz.zip
针对于spring集成quartz配置进行详细说明,并提供部分简单示例说明配置。
spring boot集成quartz定时器,job支持spring的依赖注入
好像很多人整合出现了问题,所以抽个demo出来 是一个demo包含源码和lib 在tomcat下可以执行
Spring4集成quartz2.2.1,可打包成可执行jar或者war。
Spring集成的Quartz例子
spring2.0 使用 Quartz 必备包 里面有: quartz-all-1.5.2.jar spring-support.jar 适合:SSH框架 spring2.0 strut2.0 hibernate3.2等
Quartz 是个开放源码项目,提供了丰富的作业调度集。希望您在阅读完本文并看过代码演示后,可 以把Quartz 的基本特性应用到任何Java™ 应用程序中。
quartz: 1.页面配置Trigger以及选择Job任务来开启定时器。 2.记录job执行历史以及异常。 3.记录schedule操作历史以及异常。 分享给大家,欢迎提出批评和建议。 有些注释没有加上,有任何问题都可以email: ...
Spring 4.2.2 集成 Quartz Scheduler 2.2.2 的一个简单的 demo
本文章是关于springboot集成quartz集群的步骤,LZ亲测。