文档章节

定时器-java-Spring Boot

Boss-x
 Boss-x
发布于 2017/04/11 18:04
字数 955
阅读 118
收藏 1

【spring-boot】 spring boot集成quartz实现定时任务

项目中 定时器和爬虫要联合到一块

  

Spring boot 集成quartz 定时器 简单的分为以下几步

 

1、配置文件

2、注解

3、时间表达式

 

 

配置文件

<dependency>

            <groupId>org.quartz-scheduler</groupId>

            <artifactId>quartz</artifactId>

            <version>1.8.4</version>

        </dependency>

 

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId>

        </dependency>

 

 

 

注解

@EnableScheduling // 启用定时任务

@Scheduled(fixedRate = 5000) // 每隔5秒

@Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次

@Scheduled(cron = "0 0 0/3 * * ?") // 每3个小时执行一次

 

这些星号由左到右按顺序代表 : * * * * * * *
java定时器格式: [秒] [分] [小时] [日] [月] [周] [年]

 

通配符说明:
* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。
? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?
- 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。
, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。
L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").

小提示
'L'和 'W'可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发(一般指发工资 )


# 序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了)

 

启动类

package com.yanchengtech.yuntuigou.ui;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.context.web.SpringBootServletInitializer;

import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.cloud.netflix.feign.EnableFeignClients;

import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

import org.springframework.scheduling.annotation.EnableScheduling;

 

@SpringBootApplication

@EnableEurekaClient

@EnableFeignClients

@EnableCircuitBreaker

@EnableZuulProxy

 

@EnableScheduling // 启用定时任务

public class UiApplication extends SpringBootServletInitializer {

@Override

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)

    {

        return application.sources(UiApplication.class);

    }

public static void main(String[] args) {

SpringApplication.run(UiApplication.class, args);

}

}

 

 

@ResponseBody

@RequestMapping("/findGoodsUrl")

public String findGoodsUrl(String userName){

userName = "admin";

if (userName != null && userName.equals("admin")) {

 Long before = System.currentTimeMillis();

 String couponOut = goodsInfoService.findGoodsUrl(userName);

 Long after = System.currentTimeMillis();  

 System.out.println(after - before);

 return couponOut;

}else{

return null;

}

 }

 

// @Scheduled(fixedRate = 5000) // 每隔5秒

// @Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次

@Scheduled(cron = "0 0 0/3 * * ?") // 每3个小时执行一次

public void allMediaClipJob(){

findGoodsUrl(null);

}

 

其他通用版本的定时器

看下面

1、Spring 框架 定时器 链接

HTTP://www.cnblogs.com/kay/archive/2007/11/02/947372.html

 

2、spring boot 不需要配置文件 自己写工具的定时器 -链接

http://www.tuicool.com/articles/mQFV7rf

 

还有其他很多版本......

© 著作权归作者所有

Boss-x
粉丝 4
博文 39
码字总数 16216
作品 0
杭州
后端工程师
私信 提问
【小马哥】Spring Boot系列讲座

这里为大家推荐一个不错的Spring Boot系列讲座,讲师介绍如下: 小马哥,阿里巴巴技术专家,从事十余年Java EE 开发,国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施、...

杜琪
2018/03/02
0
0
为什么Java大神,都在看Spring Boot和Spring Cloud的书?

如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的书籍,那么,你今天就来对地方了。 本文,我们将讨论一些学习Spring Boot和Spring ...

Java小铺
2018/09/18
445
3
Java 程序员必会的技术——Spring boot

每一位程序员都有一个英雄梦,幻想着有朝一日能够 拳打国内BAT,脚踢硅谷FLG。至少至少,也要成为后厂村一霸。 对于后端程序员来说,有一项至关重要的技术可以帮助我们早日实现梦想。这项技术...

Java填坑之路
2018/09/14
34
0
为什么越来越多的开发者选择使用Spring Boot?

一、Web应用开发背景 使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架、库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,...

Ala6
2018/10/10
131
0
第7课:Java Spring Boot 2.0安全机制、漏洞与MVC身份验证实战

《阿里巴巴Java Spring Boot 2.0开发实战课程》07课 本期分享专家:徐雷—阿里巴巴特邀Java讲师,MongoDB讲师 本期分享主题:Java Spring Boot2.0实战MyBatis与优化 (Java面试题) Java Spri...

徐雷frank
2018/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
161
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部