以前做内部项目与企业微信集成,获取access_token的时候专门用一个class 定义了一个 static 字段属性储存access_token值 并且这个 access_token没有做持久化(存入redis、或者db),请大佬分析下我这样的方案会有access_token内存泄漏的风险吗?(比如该字段属性失效 提前被GC回收) 或者在web并发请求下TokenStroe是否安全 下面有伪代码
class TokenStore{
private static Map tokenMap
static {
Map tokenMap = WXUtil.Post(url,corpId...)
}
//Web容器启动的时候随着.class的加载 直接去先获取一次ACCESS_TOKEN
public static String ACCESS_TOKEN = tokenMap.get("ACCESS_TOKEN");
public static String EXPIRE_TIME = tokenMap.get("EXPIRE_TIME");
}
//消费 token 伪代码
public List<User> getUserList(){
String token = null;
//null代表token过期或者没有初始化 在次使用WXUtil重新获取token
if(TokenStore.EXPIRE_TIME == null || System.currenttime()-ACCESS_TOKEN.EXPIRE_TIME > 7100){
synchronized(TokenStore.class){
if(TokenStore.EXPIRE_TIME == null || System.currenttime()-ACCESS_TOKEN.EXPIRE_TIME > 7100){
TokenStore.EXPIRE_TIME = WXUtil.Post(url,corpId...).get("EXPIRE_TIME");
TokenStore.ACCESS_TOKEN = WXUtil.Post(url,corpId...).get("ACCESS_TOKEN");
}
}//end syn
}
token = TokenStore.ACCESS_TOKEN;
List list = WXUtil.getUserList(url,token);
return list ;
}