Spring任务调度之Spring-Task详解编程语言
一.前言
上面两篇介绍了在Spring 中使用Timer与Quartz,本篇将介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种形式,下面将分别介绍这两种方式。
二、第一种:配置文件方式第一步:编写作业类
即普通的pojo,如下:
beans xmlns= http://www.springframework.org/schema/beans
xmlns:task= http://www.springframework.org/schema/task
xsi:schemaLocation= http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
task:scheduled-tasks
task:scheduled ref= taskJob method= job1 cron= 0 * * * * ? /
/task:scheduled-tasks
context:component-scan base-package= com.gy.mytask /
/beans
说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式。 context:component-scan base-package= com.gy.mytask / 这个配置不消多说了,spring扫描注解用的。
第二种:使用注解形式也许我们不想每写一个任务类还要在xml文件中配置下,[email protected],我们看看源文件中该注解的定义:
@Target
({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})
可以看出该注解有三个方法或者叫参数,分别表示的意思是:
cron:指定cron表达式。
fixedDelay:官方文档解释:An interval-based trigger where the interval is measured from the completion time of the previous task. The time unit value is measured in milliseconds.即表示从 上一个任务完成开始到下一个任务开始的间隔,单位是毫秒。
fixedRate:官方文档解释:An interval-based trigger where the interval is measured from the start time of the previous task. The time unit value is measured in milliseconds.即从上一个任务 开始到下一个任务开始的间隔,单位是毫秒。
第一步:编写pojo
http:
//www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http:
//www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http:
//www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http:
//www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
说明:理论上只需要加上 task:annotation-driven / 这句配置就可以了,这些参数都不是必须的。
配置完毕,spring task还有很多参数,具体参考xsd文档 http://www.springframework.org/schema/task/spring-task-3.0.xsd
Demo
======================================Spring.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:task= http://www.springframework.org/schema/task xmlns:p= http://www.springframework.org/schema/p
xsi:schemaLocation=
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.3.xsd
! 隐式地向Spring容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor
context:annotation-config /
! 使用 annotation 自动注册bean
context:component-scan base-package= cn.yunhwa.test
context:exclude-filter type= annotation
expression= org.springframework.stereotype.Controller /
/context:component-scan
! 参数说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式
! 0 0/15 4,5,6 ? * MON-SAT 周一至周六四点、五点、六点,每十五分钟执行一次
task:scheduled-tasks scheduler= myscheduler
task:scheduled ref= testTask method= taskTest
cron= 0 0/1 * * * * /
/task:scheduled-tasks
task:scheduler id= myscheduler pool-size= 10 /
/beans
===========================测试类TestTask=============================
package cn.yunhwa.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component( testTask )
public class TestTask {
private Logger logger = LoggerFactory.getLogger(TestTask.class);
public void taskTest() {
logger.debug( 测试task定时任务{}! , 执行 );
}
public static void main(String[] args) {
new TestTask().logger.debug( {}! , 执行 );
}
}
引用原文:http://www.cnblogs.com/hongwz/p/5642497.html
写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!
如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/15448.html
cjavaxml相关文章
- spring MVC 入门程序详解编程语言
- 在spring中使用quartz的一个小例子详解编程语言
- spring自带HTTP请求工具类的简单使用详解编程语言
- spring的AOP(三)—-Cglib动态代理详解编程语言
- Spring调度任务cronjob 精确指定任务的运行时间详解编程语言
- drools6的kie-spring集成使用详解编程语言
- Spring Boot入门第三天:配置日志系统和Druid数据库连接池。详解编程语言
- Spring Cloud(十三):Spring Cloud Sleuth服务链路追踪(zipkin)详解编程语言
- Spring Boot(五):Spring Boot的启动器Starter大全及自定义Starter详解编程语言
- Spring加载xml配置文件的方式(BeanFactory和ApplicationContext区别)详解编程语言
- 通过Spring配置文件中bean中的property赋值详解编程语言
- Spring Boot2.0之 整合Zookeeper集群详解编程语言
- Spring Boot2.0之 整合Redis集群详解编程语言
- Spring Boot2.0之整合Redis详解编程语言
- Spring Boot2.0之整合事物管理详解编程语言
- Spring Boot 单元测试详解+实战教程编程语言
- Spring Boot Debug调试详解编程语言
- Spring Boot 集成 Mybatis 实现双数据源详解编程语言
- Spring Boot 2 (三):Spring Boot 2 相关开源软件详解编程语言
- Spring Boot(十):邮件服务详解编程语言
- Spring Hiernate整合详解编程语言
- Spring系列之谈谈对Spring IOC的理解详解编程语言
- Spring Security开发调试记录详解编程语言
- Spring boot+vue前后端开发学习笔记2详解编程语言