上一篇 是使用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;
}