|
@@ -1,59 +1,48 @@
|
|
package cn.com.qmth.examcloud.support.redis;
|
|
package cn.com.qmth.examcloud.support.redis;
|
|
|
|
|
|
-import java.lang.reflect.Method;
|
|
|
|
-
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.cglib.proxy.Enhancer;
|
|
import org.springframework.cglib.proxy.Enhancer;
|
|
import org.springframework.cglib.proxy.MethodInterceptor;
|
|
import org.springframework.cglib.proxy.MethodInterceptor;
|
|
import org.springframework.cglib.proxy.MethodProxy;
|
|
import org.springframework.cglib.proxy.MethodProxy;
|
|
|
|
|
|
|
|
+import java.lang.reflect.Method;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* redis key helper
|
|
* redis key helper
|
|
*
|
|
*
|
|
* @author WANGWEI
|
|
* @author WANGWEI
|
|
* @date 2019年12月12日
|
|
* @date 2019年12月12日
|
|
- * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
|
|
|
|
*/
|
|
*/
|
|
public class RedisKeyHelper {
|
|
public class RedisKeyHelper {
|
|
|
|
|
|
- private static RedisKeyBuilder redisKeyBuilder;
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 创建 {@link RedisKeyBuilder} 实例
|
|
|
|
- *
|
|
|
|
- * @author WANGWEI
|
|
|
|
- */
|
|
|
|
- private static void newInstance() {
|
|
|
|
- Enhancer enhancer = new Enhancer();
|
|
|
|
- enhancer.setSuperclass(RedisKeyBuilder.class);
|
|
|
|
- enhancer.setCallback(new MethodInterceptor() {
|
|
|
|
- @Override
|
|
|
|
- public Object intercept(Object obj, Method method, Object[] objects,
|
|
|
|
- MethodProxy methodProxy) throws Throwable {
|
|
|
|
- RedisKeyDefine define = method.getAnnotation(RedisKeyDefine.class);
|
|
|
|
- String prefix = define.Prefix();
|
|
|
|
- String key = prefix + ":" + StringUtils.join(objects, '_');
|
|
|
|
- return key;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- redisKeyBuilder = (RedisKeyBuilder) enhancer.create();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取 {@link RedisKeyBuilder} 实例
|
|
|
|
- *
|
|
|
|
- * @author WANGWEI
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static RedisKeyBuilder getBuilder() {
|
|
|
|
- if (null == redisKeyBuilder) {
|
|
|
|
- synchronized (RedisKeyHelper.class) {
|
|
|
|
- if (null == redisKeyBuilder) {
|
|
|
|
- newInstance();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return redisKeyBuilder;
|
|
|
|
- }
|
|
|
|
|
|
+ private static RedisKeyBuilder redisKeyBuilder;
|
|
|
|
+
|
|
|
|
+ private static void newInstance() {
|
|
|
|
+ Enhancer enhancer = new Enhancer();
|
|
|
|
+ enhancer.setSuperclass(RedisKeyBuilder.class);
|
|
|
|
+ enhancer.setCallback(new MethodInterceptor() {
|
|
|
|
+ @Override
|
|
|
|
+ public Object intercept(Object obj, Method method, Object[] objects, MethodProxy methodProxy)
|
|
|
|
+ throws Throwable {
|
|
|
|
+ RedisKeyDefine define = method.getAnnotation(RedisKeyDefine.class);
|
|
|
|
+ String prefix = define.Prefix();
|
|
|
|
+ return prefix + StringUtils.join(objects, '_');
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ redisKeyBuilder = (RedisKeyBuilder) enhancer.create();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static RedisKeyBuilder getBuilder() {
|
|
|
|
+ if (null == redisKeyBuilder) {
|
|
|
|
+ synchronized (RedisKeyHelper.class) {
|
|
|
|
+ if (null == redisKeyBuilder) {
|
|
|
|
+ newInstance();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return redisKeyBuilder;
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|