使用spring的 quatz和 task方式 可以很容易实现定时任务调度的功能,
可以使用配置文件的方式,也可以使用 注解的方式
一,quatz 方式:
配置文件内容如下:
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"
default-autowire="default" default-lazy-init="false">
<!-- 自定义任务 -->
<bean id="myTask" class="task.MyTask"></bean>
<bean id="myTaskMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myTask"></property>
<property name="targetMethod" value="execute" ></property>
</bean>
<!-- 触发器 -->
<bean id="myTaskTragger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="myTaskMethod"></property>
<property name="cronExpression" value="* * * * 10 ?"></property>
</bean>
<!-- 调度工厂 -->
<bean id="schedularFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="myTaskTragger"></ref>
</list>
</property>
</bean>
</beans>
执行任务方法:
package task;
/**
* 定时任务的具体内容
* @author wwp
*
*/
public class MyTask {
/**
* 任务方法
*/
public void execute(){
System.out.println("任务调度测试");
}
}
输出结果:
[16-10-07 18:43:00.530] {main}
[16-10-07 18:43:00.532] {main} Resin[id=app-0] started in 12597ms
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
任务调度测试
二,task(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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd "
default-autowire="default" default-lazy-init="false">
<bean id="myTask" class="task.MyTask"></bean>
<task:scheduled-tasks>
<task:scheduled ref="myTask" method="execute" cron="* * * * 10 ?"/>
</task:scheduled-tasks>
</beans>
任务类和 输出结果同上;
三,task(注解方式)
配置文件
<?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:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd ">
<!-- 必须 -->
<task:annotation-driven/>
<bean id="myTask" class="task.annotation.AnnotationTask"></bean>
</beans>
任务类
package task.annotation;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* 定时任务调度(注解)
* @author wwp
*/
@Component
public class AnnotationTask {
@Scheduled(cron="* * * * 10 ?")
public void test(){
System.out.println("注解任务调度");
}
}