博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载《spring定时任务轮询(spring Task)》
阅读量:5876 次
发布时间:2019-06-19

本文共 2385 字,大约阅读时间需要 7 分钟。

亲测可用

原文网址:http://blog.csdn.net/wanglha/article/details/51026697

本博主注:xmlns:task="http://www.springframework.org/schema/task"

原文:

定时任务轮询比如任务自服务器启动就开始运行,并且每隔5秒执行一次。

以下用spring注解配置定时任务。

1、添加相应的schema

1
2
3
4
xmlns:task="
xsi:schemaLocation="
    
    
"

  

完整schema如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<
beans 
xmlns=""
    
xmlns:context="" xmlns:p=""
    
xmlns:mvc="" xmlns:xsi=""
    
xmlns:task=""
    
xsi:schemaLocation="
      
      
      
      
      
      
      
">
</
beans
>

  

2、配置自动调度的包和定时开关

1
2
3
4
5
6
<!-- 注解扫描包 -->
<
context:component-scan 
base-package="com.ljq.web.controller.annotation" />
<!-- Enables the Spring Task @Scheduled programming model -->
<
task:executor 
id="executor" pool-size="5" />
<
task:scheduler 
id="scheduler" pool-size="10" />
<
task:annotation-driven 
executor="executor" scheduler="scheduler" />

  

3、添加调度测试类

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package 
com.ljq.web.controller.annotation;
 
import 
org.springframework.scheduling.annotation.Scheduled;
import 
org.springframework.stereotype.Service;
 
/**
 
* 调度测试类(每隔5秒执行一次)
 
*
 
* @author Administrator
 
*
 
*/
@Service
public 
class 
TaskTest {
    
@Scheduled
(cron = 
"0/5 * * * * ? "
)
    
public 
void 
myTestWork() {
        
System.out.println(System.currentTimeMillis());
    
}
}

 

 

 

20180707

可用@Component代替@Service,以注入Service层

package com.bjbr.task;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Lazy;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;import com.bjbr.service.SendWxService;@Component@Lazy(false)public class SendWxTask {    private static final Logger logger = LoggerFactory.getLogger(SendWxTask.class);    @Autowired    private SendWxService sendWxService;    /**     * @todo 每天七点     * @author zhangyanan     * @datetime 2018年7月3日下午5:09:31     */    @Scheduled(cron = "0 0 7 * * ?")    public void everyDayWork() {        logger.debug("----------进入everyDayWork提醒------------");    }}

 

可以看到cron表达式与之前的不同,新手可能不懂,解释一下

cron = "0 0 7 * * ?" cron = "0/5 * * * * ? " String []s=cron.split(" "); s[0]:秒 s[1]:分 s[2]:时 s[3]:日 s[4]:月 s[5]:星期 【s[6]】:年 注意s[6],cron表达式在线生成器是可以解析运行的,但实际情况并不是 以源码的形式展示了spring cron表达式只支持6 fields,实际运用的时候不要出现
cron = "0 0 7 * * ? 2018"这样的形式,否则会报异常: java.lang.IllegalArgumentException: cron expression must consist of 6 fields (found 7 in******

转载于:https://www.cnblogs.com/yanan7890/p/8621870.html

你可能感兴趣的文章
HTML5 video 视频标签 常用属性
查看>>
深入理解javascript对象系列第一篇——初识对象
查看>>
Redis_master-slave模式
查看>>
qemu安装
查看>>
多媒体开发之rtmp---rtmp client 端的实现
查看>>
3.使用Maven构建Web项目
查看>>
iView实现自定义Modal
查看>>
如何在云帮上配置https
查看>>
JQuery干货篇之插入元素
查看>>
Imperva开源域目录控制器,简化活动目录集成
查看>>
可观察性驱动开发,探索未知之地
查看>>
Webpack构建兼容IE8
查看>>
Deis发布1.4版本,支持Microsoft Azure
查看>>
解读2016之Golang篇:极速提升,逐步超越
查看>>
原创:新手布局福音!微信小程序使用flex的一些基础样式属性(二)
查看>>
Swift 烧脑体操(二) - 函数的参数
查看>>
用Elm语言降低失败的风险
查看>>
荷兰商业银行使用精益领导力推行改进
查看>>
cisco 多生成树MST笔记
查看>>
FPGA设计——图像处理(锐化增强)
查看>>