Spring quartz定时任务和Spring0-Task定时任务

Spring的几种定时任务

Spring-Task

Spring-Task在Spring3.0以后自主开发的定时任务工具,Spring Task,可以比作一个轻量级的Quartz,使用时简单,除了Spring相关的包外不需要额外的包,并且有支持注解和配置文件两种实现方式。

 配置文件形式

 

第一步 : 在spring配置文件中加入头文件加入如下代码

 

xmlns:task="http://www.springframework.org/schema/task http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd

 

 

第二步 : 在spring配置文件中加入具体的任务代码,多任务时候可以设置连接池

<task:scheduled-tasks><task:scheduled ref="spring_shedule" method="springShedule" cron="0/1 * * * * ?"/></task:scheduled-tasks><task:annotation-driven scheduler="myScheduler"/><task:scheduler id="myScheduler" pool-size="20"/><context:component-scan base-package="com.meihf.mjoyblog.*" />

ref="spring_shedule"是任务类,配置类的id是spring_shedule,method="springShedule"是任务类中的方法 cron是cronExpression表达式

 

* 注解方式

 

第一步在spring配置文件中添加

 

<task:annotation-driven scheduler="myScheduler"/><task:scheduler id="myScheduler" pool-size="20"/>

 

 

第二步编写定时任务类代码如下

 

@Component 
public class Spring_Shedule_Annotation {
@Scheduled(cron = "0/1 * * * * ?")
public void testShedule(){System.out.println("注解方式启动定时任务");}
}

 

* Quartz方式启动定时任务,使用此方法时候要考虑到jar包的版本问题(spring和quartz的)

代码如下:

第一步:编写测试类:

 

 

public class SpringSheduleQuartz implements Job{
public void sheduleQuartz(){
System.out.println("Quartz定时任务调度");
}
@Override public void execute(JobExecutionContext arg0) throws   JobExecutionException {
  sheduleQuartz();}
}

 

第二步:

<bean id="springQuartzShe" class="com.meihf.mjoyblog.spring.quartz.SpringSheduleQuartz" />

 

 

第三步:

<!-- job的配置开始 -->
<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject"><ref bean="springQuartzShe" /></property><property name="targetMethod"><value>sheduleQuartz</value></property></bean>
<!-- 调度的配置开始 -->
<bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail"><ref bean="myJobDetail" /></property><property name="cronExpression"><value>0/1 * * * * ?</value></property></bean>
<!-- 调度的配置结束 -->
 <!-- 启动触发器的配置开始 -->
<bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="crontestJobTrigger" /></list></property></bean>
<!-- 启动触发器的配置结束 -->

猜你喜欢

转载自jackmei.iteye.com/blog/2316855