框架自动注入XyGeneratorUtils工具类,提供静态方法产生指定类型的key
�基于统一的方式生产cacheKey,lockKey,用户tokenKey
cacheKey格式:【applicationId:cache:group:value】
lockKey格式:【applicationId:lock:group:value】
userTokenKey:【access_token:userId】
/**
* cache key,lock key tools
*
* @author licw
*/
public class GeneratorManager {
@Value("${spring.application.id}")
private Integer applicationId;
/**
* 获取缓存key
*
* @param group 业务类型
* @return 缓存key
*/
public String generatorCacheKey(XyEnum group) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("cache");
paramStr.append(":");
paramStr.append(group.getValue());
return paramStr.toString();
}
/**
* 获取缓存key
*
* @param group 业务类型
* @param key 缓存业务关键点
* @return 缓存key
*/
public String generatorCacheKey(XyEnum group, String key) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("cache");
paramStr.append(":");
paramStr.append(group.getValue());
paramStr.append(":");
paramStr.append(key);
return paramStr.toString();
}
/**
* 获取缓存key
*
* @param group 业务类型
* @param keys 缓存业务关键点
* @return 缓存key
*/
public String generatorCacheKey(XyEnum group, String... keys) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("cache");
paramStr.append(":");
paramStr.append(group.getValue());
return getString(paramStr, keys);
}
private String getString(StringBuilder paramStr, String[] keys) {
if (keys == null || keys.length == 0) {
return paramStr.toString();
}
for (int i = 0; i < keys.length; i++) {
paramStr.append(":");
paramStr.append(keys[i]);
}
return paramStr.toString();
}
/**
* 获取分布锁key
*
* @param group 业务类型
* @return 分布锁key
*/
public String generatorLockKey(String group) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("lock");
paramStr.append(":");
paramStr.append(group);
return paramStr.toString();
}
/**
* 获取分布锁key
*
* @param group 业务类型
* @param key 锁业务关键点
* @return 分布锁key
*/
public String generatorLockKey(String group, String key) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("lock");
paramStr.append(":");
paramStr.append(group);
paramStr.append(":");
paramStr.append(key);
return paramStr.toString();
}
/**
* 获取分布锁key
*
* @param group 业务类型
* @param keys 锁业务关键点
* @return 分布锁key
*/
public String generatorLockKey(String group, String... keys) {
StringBuilder paramStr = new StringBuilder();
paramStr.append(this.applicationId);
paramStr.append(":");
paramStr.append("lock");
paramStr.append(":");
paramStr.append(group);
return getString(paramStr, keys);
}
/**
* 获取登陆token缓存key
*
* @param userId 用户Id
* @return token缓存key
*/
public String generatorTokenKey(String userId) {
StringBuilder paramStr = new StringBuilder();
paramStr.append("access_token");
paramStr.append(":");
paramStr.append(userId);
return paramStr.toString();
}
}