上一篇 是使用ecache 做的缓存, 有些简单的微信项目并不需要这么复杂,So就想到单例设计模式
首先,我们先定义一个单例对象
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; }