如你梦想和现实只是一步之遥,那么我觉得这一步就应该是执着和笨蛋式的坚持了吧。

Web app quartz几种任务调度器的使用

后端开发 独孤九剑 312℃ 0评论

参考文章:Spring定时任务的几种实现

    本地的环境:
   spring的版本
   spring-context-support-4.2.5.RELEASE
   quartz的版本
  quartz-2.2.3

每个版本的类可能有差别所以还是需要根据自己本身的环境来配置,
具体的集中方式在参考的文章里面已经说的很清楚了。只是我在使用配置的时候,发现在新的版本中那些类的名称
已经更改了,所以我讲新的配置在做下笔记:

######采用继承特定类的方式实现######
Java类的编写:不变

public class TaskFromExtends extends QuartzJobBean{
	
	private int timeout;
	
	//调度工厂实例化后,经过timeout时间开始执行调度 
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}

	@Override
	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
		System.out.println("定时任务执行中…");
	}

}

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" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	default-lazy-init="true" xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
		http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<!-- 任务调度器 -->
	<bean name="job"
		class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
		<property name="jobClass" value="com.deu.tsf.task.TaskFromExtends" />
		<property name="jobDataAsMap">
			<map>
				<entry key="timeout" value="0" />
			</map>
		</property>
	</bean>

	<!-- 指定延时时间 调度配置方式 -->
	<!-- <bean id="simpleTrigger"
		class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
		<property name="jobDetail" ref="job" />
		<property name="startDelay" value="0" />调度工厂实例化后,经过0秒开始执行调度
		<property name="repeatInterval" value="2000" />每2秒调度一次
	</bean> -->

	<!-- 采用cron表达式 配置的计划调度 -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="job" />  
		<!--每天12:00运行一次 -->
		<property name="cronExpression" value="0 0 17 19 * ?" />
	</bean>

	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>

</beans>

######采用普通的类,调用指定方法的方式######
Java类的编写:

public class TaskFromClass {

	public void task_method(){
		System.out.println("采用普通的方法配置,任务调度器");
	}
}

xml的配置

<!-- 普通的Java类通过方法调用的方式配置 -->
	<bean id="job2"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<bean class="com.deu.tsf.task.TaskFromClass" />
		</property>
		<property name="targetMethod" value="task_method" />
		<property name="concurrent" value="false" /><!-- 作业不并发调度 -->
	</bean>

	<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
		<property name="jobDetail" ref="job2" />
		<property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
		<property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->
	</bean>  
	
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="simpleTrigger" />
			</list>
		</property>
	</bean>

PS: 服务器页面生成花费时间 0.14秒 查询 41 次

转载请注明:KEEP3YUE » Web app quartz几种任务调度器的使用

喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址