spring 定时任务

第一步 新建任务类, 包括需要定时执行的方法

package com.quicksand.task;

import org.springframework.stereotype.Service;

@Service("TestTaskImpl")//如果手动xml方式配置bean的话 这里注解可以省略
public class TestTaskImpl {

  //定时执行的方法

public void mothed1() {
  // TODO Auto-generated method stub
  System.out.println("定时执行");
}

}

第二步 添加spring配置

<!-- 要调用的工作类 这里可以使用配置的bean 也可以用注解的方式配置为自动扫描-->
<!-- <bean id="testTask" class="com.quicksand.task.TestTaskImpl"></bean> -->

 

<!-- 定义调用对象和调用对象的方法 -->
<bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <!-- 调用的类 -->
  <property name="targetObject" ref="TestTaskImpl" />
  <!-- 调用类中的方法 -->
  <property name="targetMethod" value="mothed1"/>
  <!-- 作业是否并发调度 --> 
  <!--<property name="concurrent" value="true" /> -->
</bean> 

<!--触发器配置 介绍下列2种方式 根据需要选一种即可-->

方式1.相对复杂,控制灵活
<bean id="testTaskCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  <property name="jobDetail" ref="testTask" />

  <!--这里的value使用的表达式可自行百度cronExpression-->
  <property name="cronExpression" value="0/30 * * * * ?" />
</bean>

方式2 简单易使用

<bean id="testTaskCronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
  <property name="jobDetail" ref="testTask" />
  <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
  <property name="repeatInterval" value="5000" /><!-- 每5秒调度一次 -->
</bean>

<!-- 调度任务管理 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
  <list>
  <ref bean="testTaskCronTrigger" />
  </list>
  </property>

第三步 测试启动 在测试方法中启动容器即可

ApplicationContext context=new ClassPathXmlApplicationContext("spring-mvc-task.xml");
System.out.println("任务已启动...");

注:依赖jar包 org.slf4j.jar

测试效果如下:

 

以上内容参考其他前辈们的文章,还没仔细研究这里方便快速了解使用的同学

没养成写博客这习惯 写起来还真费劲,以后得练练才行...

posted @ 2016-09-21 15:14  3点破面  阅读(315)  评论(0编辑  收藏  举报