From ce62d1c01b77ac2968f66445516c9faa420399fb Mon Sep 17 00:00:00 2001 From: Brayden Wong Date: Sat, 16 Jan 2021 22:14:38 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20=E6=8F=90=E4=BE=9Baccess=5Ftoken?= =?UTF-8?q?=E4=BF=9D=E5=AD=98ConcurrentHashMap=E4=B8=AD=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=EF=BC=8C=E6=94=AF=E6=8C=81=E9=AB=98=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/config/impl/WxMpMapConfigImpl.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpMapConfigImpl.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpMapConfigImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpMapConfigImpl.java new file mode 100644 index 000000000..a9eb344f3 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/config/impl/WxMpMapConfigImpl.java @@ -0,0 +1,45 @@ +package me.chanjar.weixin.mp.config.impl; + +import lombok.Data; +import me.chanjar.weixin.common.bean.WxAccessToken; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Author: Brayden Wong + * @Date: 2021/1/16 + * @Description: 提供accesstoken保存在concurrenthashmap中的实现,支持高并发。仅限于单机部署。 + */ +@Data +public class WxMpMapConfigImpl extends WxMpDefaultConfigImpl { + + private static final long serialVersionUID = 5311395137835650104L; + + private static final ConcurrentHashMap CONCURRENT_HASH_MAP = new ConcurrentHashMap<>(1); + + private static final String MAP_KEY = "access_token"; + + + @Override + public String getAccessToken() { + return CONCURRENT_HASH_MAP.get(MAP_KEY); + } + + @Override + public void setAccessToken(String accessToken) { + CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken); + } + + @Override + public void updateAccessToken(WxAccessToken accessToken) { + updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn()); + } + + @Override + public void updateAccessToken(String accessToken, int expiresInSeconds) { + CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken); + this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L; + } + + +}