`
Colin_Davis
  • 浏览: 26050 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring4 quartz2 定时执行

    博客分类:
  • Java
 
阅读更多

    据说 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定时执行功能

    下面我们将深入探讨如何利用Spring注解实现Quartz定时执行功能。 首先,我们需要引入Quartz和Spring的相关依赖。在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;...

    spring3配置quartz定时任务

    总结,通过以上步骤,我们就成功地在Spring 3中配置了Quartz定时任务,实现了每10秒执行一次的任务。在实际应用中,你可以根据需求定义更复杂的作业和触发器,以及使用Quartz的其他高级特性,如集群支持、持久化作业...

    spring+quartz动态定时任务创建 +mybatis

    在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...

    spring2.0 Quartz 执行每天定时任务 普通普是执行任务

    标题中的“spring2.0 Quartz 执行每天定时任务 普通普是执行任务”涉及到的是在Spring 2.0框架中使用Quartz库来创建并执行每天定时任务的场景。Quartz是一款强大的开源作业调度框架,它可以用来按计划执行各种任务,...

    完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题

    在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...

Global site tag (gtag.js) - Google Analytics