SpringAccessTokenCache.java 1.2 KB
Newer Older
如梦技术's avatar
如梦技术 已提交
1 2 3
package net.dreamlu.weixin.cache;

import com.jfinal.weixin.sdk.cache.IAccessTokenCache;
4
import lombok.RequiredArgsConstructor;
如梦技术's avatar
如梦技术 已提交
5
import net.dreamlu.weixin.properties.DreamWeixinProperties;
如梦技术's avatar
如梦技术 已提交
6
import org.springframework.cache.Cache;
如梦技术's avatar
如梦技术 已提交
7 8 9
import org.springframework.cache.CacheManager;

import java.util.Objects;
如梦技术's avatar
如梦技术 已提交
10

11 12 13 14 15
/**
 * 基于 spring cache 的 weixin token 缓存
 *
 * @author L.cm
 */
16
@RequiredArgsConstructor
如梦技术's avatar
如梦技术 已提交
17
public class SpringAccessTokenCache implements IAccessTokenCache {
如梦技术's avatar
v1.3.0  
如梦技术 已提交
18
	private final static String ACCESS_TOKEN_PREFIX = "dream-weixin:token:";
如梦技术's avatar
如梦技术 已提交
19 20
	private final CacheManager cacheManager;
	private final DreamWeixinProperties properties;
如梦技术's avatar
如梦技术 已提交
21 22 23

	@Override
	public String get(String key) {
如梦技术's avatar
如梦技术 已提交
24
		return getCache().get(ACCESS_TOKEN_PREFIX + key, String.class);
如梦技术's avatar
如梦技术 已提交
25 26 27 28
	}

	@Override
	public void set(String key, String jsonValue) {
如梦技术's avatar
如梦技术 已提交
29
		getCache().put(ACCESS_TOKEN_PREFIX + key, jsonValue);
如梦技术's avatar
如梦技术 已提交
30 31 32 33
	}

	@Override
	public void remove(String key) {
如梦技术's avatar
如梦技术 已提交
34 35 36 37 38 39 40
		getCache().evict(ACCESS_TOKEN_PREFIX + key);
	}

	private Cache getCache() {
		String accessTokenCacheName = properties.getAccessTokenCache();
		Cache cache = cacheManager.getCache(accessTokenCacheName);
		return Objects.requireNonNull(cache, "AccessToken cache is null.");
如梦技术's avatar
如梦技术 已提交
41
	}
如梦技术's avatar
如梦技术 已提交
42

如梦技术's avatar
如梦技术 已提交
43
}