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
测试效果如下:
以上内容参考其他前辈们的文章,还没仔细研究这里方便快速了解使用的同学
没养成写博客这习惯 写起来还真费劲,以后得练练才行...