【tmos】spring boot项目中处理Schedule定时任务
我的代码
/**
* Author:Mr.X
* Date:2017/10/30 14:54
* Description:
*/
@Component
@Configurable
@EnableScheduling
public class ScheduledTasksConfig {
@Autowired
private WeixinConfig weixinConfig;
@Autowired
private UserWebAnalysisRepository userWebAnalysisRepository;
/**
* 每隔110分钟刷新一次access_token和jsapi_ticket
* 7200秒=2小时
*/
@Scheduled(fixedRate = 1000 * 7200)
private void getAccessTokenAndJsapiTicket() {
// 1、获取accessToken
String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + weixinConfig.getAppID() + "&secret=" + weixinConfig.getAppSecret();
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(accessTokenUrl, String.class);
JSONObject jsonObj = JSON.parseObject(response);
String accessToken = jsonObj.getString("access_token");
System.out.println("定时任务获取access_token--->" + accessToken);
WebConst.ACCESS_TOKEN = accessToken; // 缓存accessToken
// 2、根据accessToken获取jsapi_ticket
String ticketURL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";
response = restTemplate.getForObject(ticketURL, String.class);
jsonObj = JSON.parseObject(response);
String jsapi_ticket = jsonObj.getString("ticket");
System.out.println("定时任务获取jsapi_ticket--->" + jsapi_ticket);
WebConst.JSAPI_TICKET = jsapi_ticket; // 缓存jsapi_ticket
}
/**
* 每天23点将微信端关注用户增减信息更新进库
*/
@Scheduled(cron = "0 0 23 * * ?")
private void getUserSource() {
String url = "https://api.weixin.qq.com/datacube/getusercumulate?access_token=" + WebConst.ACCESS_TOKEN;
RestTemplate restTemplate = new RestTemplate();
String jsonStr = "{ \n" +
" \"begin_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\", \n" +
" \"end_date\": \"" + DateUtil.format(new Date(), "yyyy-MM-dd") + "\"\n" +
"}";
String response = restTemplate.postForObject(url, jsonStr, String.class);
JSONObject jsonObj = JSON.parseObject(response);
String ref_date = jsonObj.getString("ref_date");
String user_source = jsonObj.getString("user_source");
String new_user = jsonObj.getString("new_user");
String cancel_user = jsonObj.getString("cancel_user");
UserWebAnalysis userWebAnalysis = new UserWebAnalysis();
userWebAnalysis.setRefDate(new Date());
userWebAnalysis.setUserSource(Integer.valueOf(user_source));
userWebAnalysis.setNewUser(Integer.valueOf(new_user));
userWebAnalysis.setCancelUser(Integer.valueOf(cancel_user));
userWebAnalysisRepository.save(userWebAnalysis);
}
}
参考链接
http://www.jianshu.com/p/ef18af5a9c1d
【tmos】spring boot项目中处理Schedule定时任务的更多相关文章
- spring boot项目中处理Schedule定时任务
项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...
- 你真的理解 Spring Boot 项目中的 parent 吗?
前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...
- Spring Boot项目中使用Swagger2
Swagger2是一款restful接口文档在线生成和在线接口调试工具,Swagger2在Swagger1.x版本的基础上做了些改进,下面是在一个Spring Boot项目中引入Swagger2的简要 ...
- 在Spring Boot项目中使用Spock框架
转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...
- Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent
前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...
- Spring Boot项目中使用Mockito
本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...
- 在Spring Boot项目中使用Spock测试框架
本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...
- Spring Boot项目中如何定制拦截器
本文首发于个人网站:Spring Boot项目中如何定制拦截器 Servlet 过滤器属于Servlet API,和Spring关系不大.除了使用过滤器包装web请求,Spring MVC还提供Han ...
- Spring Boot项目中如何定制PropertyEditors
本文首发于个人网站:Spring Boot项目中如何定制PropertyEditors 在Spring Boot: 定制HTTP消息转换器一文中我们学习了如何配置消息转换器用于HTTP请求和响应数据, ...
随机推荐
- JavaScript之美读书笔记一
前两天去图书馆借了一本<JavaScript之美>,在书架上无意中看到的,想着那就看看吧. 第一章 原型 有些JavaScript爱好者宣称JavaScript是一种基于原型而不是面向对象 ...
- id选择器为变量时
使用angularjs或者freemarker的同学基本都接触过一个问题:当使用list遍历数组值显示在页面,并要对所显示的数值进行操作时,如何选取数值所在标签? 以下是一个把地址id转为中文地址的函 ...
- 洛谷 P2622 关灯问题II(状压DP入门题)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 相关变量解释: int n,m; ];//a[i][j] : 第i个开关对第j个 ...
- 计算机基础:计算机网络-chapter2
因为计算机网络是的传输从物理到数据端的过程到端是自下而上的,所以大多数的教材都是从五层协议结构的底部开始向上延申. 物理层: = = 好复杂哦.看不懂,反正就是讲一些通信的线,信号传输的实现原理,和信 ...
- qml: 以鼠标为中心进行放缩;
import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.2 Window { visible: true widt ...
- Linux系统中/etc/rc.local和/etc/rc.d/rc.local的区别
/etc/rc.d/rc.local 用于添加开机启动命令 /etc/rc.local是/etc/rc.d/rc.local的软连接
- Oracle基础--创建临时表空间/表空间/创建用户/授权
总结:创建用户一般分四步: 第一步:创建临时表空间(创建用户之前要创建"临时表空间",若不创建则默认的临时表空间为temp.) SQL> CREATE TEMPORARY T ...
- nginx的下载、编译安装和启动
一.nginx简介 nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器.nginx是由Igor Sysoev为俄罗斯访问量第二的R ...
- MyBatis-resultType 几种返回类型
一.返回集合 1.返回JavaBean集合 public List<MyUser> selectMyUserByNameLike(String name); <!-- resultT ...
- Jquery 添加插件
原文:http://www.iteye.com/topic/545971 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法 ...