据说 quartz 2 以下的与 2.* 版本的配置不一样, 在此就忽略了, 反正我又不去用, 哈哈
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.1.6.RELEASE</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.6.RELEASE</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.servicemix.bundles</groupId> <artifactId>org.apache.servicemix.bundles.spring-context-support</artifactId> <version>4.0.7.RELEASE_3</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.1.7</version> <scope>runtime</scope> </dependency>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="autoStartup" value="true" /> <property name="triggers"> <list> <ref bean="appSchedulerTrigger" /> </list> </property> </bean> <!-- http://www.oschina.net/question/8676_9032 --> <!-- http://my.oschina.net/jeffli1993/blog/265785 --> <!-- http://www.quartz-scheduler.org/ --> <!-- 定时触发器 --> <bean id="appSchedulerTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 表达式的格式:秒 分 时 日 月 周 年(可选) --> <!-- 每天 23 点执行一次 --> <!-- <property name="cronExpression" value="0 0 23 * * ?" /> --> <!-- 每隔 1 小时执行一次, 之前的 秒 与 分 必需设置为 0 , 不然会执行 60minutes X 60seconds = 3600 次的, 别问我是怎么知道的 --> <property name="cronExpression" value="0 0 */1 * * ?" /> <property name="jobDetail" ref="appJobDetail" /> </bean> <bean id="appJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 是否允许任务并发执行 当值为false时 表示必须等到前一个线程处理完毕后才再启一个新的线程 --> <property name="concurrent" value="false" /> <property name="targetObject" ref="syncIMUserJob" /> <property name="targetMethod" value="doSync" /> </bean> <!-- 同步 IM User 任务 --> <bean id="syncIMUserJob" class="***.quartz.job.SyncIMUserJob" />
SyncIMUserJob 就是一个普通的 java 类
/** * */ package ***.quartz.job; /** * @author Colin * */ public class SyncIMUserJob { private Logger logger; /** * */ public SyncIMUserJob() { logger = Logger.getLogger( SyncIMUserJob.class ); } public void doSync() { StackTraceElement trace = Thread.currentThread().getStackTrace()[ 1 ]; logger.info( "log4j " + " --- " + trace.getClassName() + " - " + trace.getMethodName() ); } }
日志开启到 trace 级别后看到 SchedulerFactoryBean 每隔 几秒 会去触发 triggers 中对应的 触发器, 然后 triggers 会根据定义的触发规则 cronExpression 去通过 MethodInvokingJobDetailFactoryBean 反射生成 targetObject 的 targetMethod 的 Method 对象, 并调用执行.
相关推荐
下面我们将深入探讨如何利用Spring注解实现Quartz定时执行功能。 首先,我们需要引入Quartz和Spring的相关依赖。在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org.quartz-scheduler <artifactId>...
总结,通过以上步骤,我们就成功地在Spring 3中配置了Quartz定时任务,实现了每10秒执行一次的任务。在实际应用中,你可以根据需求定义更复杂的作业和触发器,以及使用Quartz的其他高级特性,如集群支持、持久化作业...
在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...
标题中的“spring2.0 Quartz 执行每天定时任务 普通普是执行任务”涉及到的是在Spring 2.0框架中使用Quartz库来创建并执行每天定时任务的场景。Quartz是一款强大的开源作业调度框架,它可以用来按计划执行各种任务,...
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...