【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请求和响应数据, ...
随机推荐
- 第三十六节,目标检测之yolo源码解析
在一个月前,我就已经介绍了yolo目标检测的原理,后来也把tensorflow实现代码仔细看了一遍.但是由于这个暑假事情比较大,就一直搁浅了下来,趁今天有时间,就把源码解析一下.关于yolo目标检测的 ...
- 第二十七节,IOU和非极大值抑制
你如何判断对象检测算法运作良好呢?在这一节中,你将了解到并交比函数,可以用来评价对象检测算法. 一 并交比(Intersection over union ) 在对象检测任务中,你希望能够同时定位对象 ...
- 3 字节的 UTF-8 序列的字节 2 无效
由于目前写完了[消息队列]模块,想做个单元测试,所以就利用spring的import标签,将mq的配置文件加入了配置.结果出现了<3 字节的 UTF-8 序列的字节 2 无效>这个问题. ...
- Luogu P3521 [POI2011]ROT-Tree Rotations
题目链接 \(Click\) \(Here\) 线段树合并,没想到学起来意外的很简单,一般合并权值线段树. 建树方法和主席树一致,即动态开点.合并方法类似于\(FHQ\)的合并,就是把两棵树的信息整合 ...
- Java 引用数据类型
引用数据类型 * A: 数据类型 * a: java中的数据类型分为:基本类型和引用类型 * B: 引用类型的分类 * a: Java为我们提供好的类,比如说:Scanner,Random等. * C ...
- iptables之端口限速
#iptables -A FORWARD -p tcp -m tcp --sport 10000 -m limit --limit 500/sec --limit-burst 1000 -j ACCE ...
- Docker笔记一:Docker介绍
目录 什么是Docker? Docker的核心概念 Docker镜像命令 Docker容器命令 Docker实战 查看我的镜像 启动Redis Docker中国镜像加速 血与泪的教训 什么是Docke ...
- GridView固定行宽,自动换行,鼠标放在Table的Tr上变色
//固定行宽table-layout:fixed;//自动换行word-break :break-all;word-wrap:break-wordGridView.Attributes.Add(&qu ...
- Tomcat虚拟路径访问本地图片失败的问题
开发过程中,把图片放在本地一个磁盘的路径下.网上搜了下,可以使用tomcat虚拟路径访问本地图片. 这样就不用把图片放在整个项目的webapp目录下了. 1.找到tomcat的server.xml文件 ...
- Java OPC 代码
这是我项目的代码,还是容易理解的,记录备份一下 1.任务详情 Java实现OPC通信的代码实现 最终实现对西门子的S7-300的PLC变量的值读写 2.实现情况 使用utgard实现通信:Java实现 ...