【微信开发】 使用单例设计模式 提供AccessToken 和Jsapi_ticket缓存支持
时间:2022-04-27
本文章向大家介绍【微信开发】 使用单例设计模式 提供AccessToken 和Jsapi_ticket缓存支持,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上一篇 是使用ecache 做的缓存, 有些简单的微信项目并不需要这么复杂,所以就想到单例设计模式
首先,我们先定义一个单例对象
import java.util.HashMap;
import java.util.Map;
/**
*
* @author wangiegie
* @date 2015年9月29日下午8:13:06
* @description
*/
public class Singleton {
//缓存accessToken 的Map ,map中包含 一个accessToken 和 缓存的时间戳
//当然也可以分开成两个属性咯
private Map<String, String> map = new HashMap<>();
private Singleton() {
}
private static Singleton single = null;
// 静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public static Singleton getSingle() {
return single;
}
public static void setSingle(Singleton single) {
Singleton.single = single;
}
}
在使用accessToken 或者Jsapi_ticket的时候 则
public static String getAccessToken() {
String result = "";
Singleton singleton = Singleton.getInstance();
Map<String, String> map = singleton.getMap();
String time = map.get("time");
String accessToken = map.get("access_token");
Long nowDate = new Date().getTime();
//这里设置过期时间 3000*1000就好了
if (accessToken != null && time != null && nowDate - Long.parseLong(time) < 3000 * 1000) {
result = accessToken;
} else {
String access_token="这里是直接调用微信的API去直接获取 accessToken 和Jsapi_ticket 获取";
map.put("time", nowDate + "");
map.put("access_token", access_token);
result = access_token;
}
return result;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【收藏向】常用Java排错工具单
- MYSQL数据同步之基于GTID事务数据同步
- 【风险通告】XXL-JOB远程命令执行漏洞
- MySQL8.0特性之redo logging动态开关
- 3分钟短文:Laravel模型集合跟基类真不一样,别混为一谈
- 3分钟短文:Laravel模型一对一一对多关系真的乱吗?
- 3分钟短文:Laravel请求对象方法极多,可不是花拳绣腿
- 3分钟短文:Laravel验证用户输入,不要把啥都存到系统里
- 3分钟短文:Laravel用户自定义命令行简明教程
- 3分钟短文:Laravel命令行参数和可选项分不清?怎么可能!
- 《Offer一箩筐》求职之前你必须知道的 4 件事!!
- 3分钟短文:有趣的Laravel命令行交互,输入和输出!
- MySQL limit导致的执行计划差异
- 3分钟短文:用Laravel的方式管理服务器的文件们
- 漫画:什么是 “抽象工厂模式” ?