Spring quartz定时任务跟Spring0-Task定时任务
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> <!-- 启动触发器的配置结束 -->