当前位置: 首页 > wzjs >正文

常州商城网站建设久久seo正规吗

常州商城网站建设,久久seo正规吗,医院网站实例,苏州做网站找哪家好我的做法:通过切面配合注解的方式使用。 注意:切面不能应用于静态方法,私有方法,注解要被代理对象调用。 1.注解 Inherited Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) public interface Re…

我的做法:通过切面配合注解的方式使用。

注意:切面不能应用于静态方法,私有方法,注解要被代理对象调用。

1.注解

@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RedisLock {String name() default "";String key() default "";int waitTime() default 5;int expireTime() default -1;TimeUnit timeUnit() default TimeUnit.SECONDS;String notes() default "";String[] tags() default {""};
}

 2.切面

@Aspect
@Component
public class RedisLockAspect {private static final Logger LOGGER = LoggerFactory.getLogger(RedisLockAspect.class);private static final String REDISSON_LOCK_PREFIX = "redisson_lock:";@Lazy@Resourceprivate RedissonClient redissonClient;/*** 定义切点*/@Pointcut("@annotation(mairuirobot.iwarehousecontrol.framework.functions.iwc.redis.annotation.RedisLock)")public void redisLockPointcut() {}/*** 环绕通知*/@Around("redisLockPointcut()")public Object around(ProceedingJoinPoint joinPoint) throws Throwable {String comment;// 获取方法上的注解 RedisLockMethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();Method method = methodSignature.getMethod();RedisLock redisLock = method.getAnnotation(RedisLock.class);String name = redisLock.name();String spel = redisLock.key();String key = getRedisKey(joinPoint, name, spel);RLock rLock = redissonClient.getLock(key);boolean lock = false;Object result = null;try {// long waitTime-获取锁的等待时长;long leaseTime-持有锁的时间,-1代表默认启动看门狗机制;TimeUnit unit-时间单位lock = rLock.tryLock(redisLock.waitTime(), redisLock.expireTime(), redisLock.timeUnit());if (!lock) {comment = String.format("Redis key[%s] lock failed, it's a repeated message", key);LOGGER.error(comment);Class<?> clazz = ((MethodSignature) joinPoint.getSignature()).getReturnType();if (GeneralResponse.class == clazz) {return GeneralResponse.failure();}if (boolean.class == clazz || Boolean.class == clazz) {return false;}return GeneralResponse.failure();}result = joinPoint.proceed();} finally {if (lock) {try {rLock.unlock();} catch (IllegalMonitorStateException e) {comment = String.format("Redis key[%s] unlock failed: errMsg = ", key);LOGGER.error(comment, e);}} else {comment = String.format("Current thread did not acquire the redis key[%s] lock, skipping unlock", key);LOGGER.error(comment);}}return result;}private String getRedisKey(ProceedingJoinPoint joinPoint, String lockName, String spel) {Object[] arguments = joinPoint.getArgs();String key = REDISSON_LOCK_PREFIX + lockName + ":" + SpelUtil.parse(spel, arguments);return key;}
}

3.解析方法(需要根据你实际情况进行修改)

public class SpelUtil {public static String parse(String spel, Object[] args) {if (spel == null || spel.isEmpty()) return "";Map<Object, Object> resMap = new HashMap<>();String[] split = spel.split("\\.");Arrays.stream(args).forEach(arg -> {JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(arg));jsonObject.forEach((key, value) -> {if (value instanceof JSONObject) {((JSONObject) value).forEach((k, v) -> {resMap.put(k, v);});} else {resMap.put(key, value);}});});try {String key = split[split.length - 1];Object value = resMap.get(key);return (value != null) ? value.toString() : "";} catch (Exception e) {throw new RuntimeException("redisson参数解析失败: " + spel, e);}}
}

4.注册bean 

@Configuration
public class MyRedisRegistration {@Value("${redisson.address:}")private String redissonAddress;@Value("${redisson.password:}")private String redissonPassword;@Beanpublic RedissonClient redissonClient() {Config config = new Config();config.useSingleServer().setAddress(redissonAddress).setPassword(redissonPassword);return Redisson.create(config);}
}

 场景:申请电梯资源的时候,会有很多请求进来,导致电梯资源被争夺,这时就需要锁定电梯资源,防止同一个设备被抢占。

http://www.dtcms.com/wzjs/592785.html

相关文章:

  • 网站设计中的js是什么女孩子做电商运营是不是压力很大
  • 网站上传设计类专业前景
  • 网站建设s山东鸿泰建设集团有限公司网站
  • 安徽合肥建设局网站外语人才网官网
  • 成都建站提供商无锡外贸网站制作公司
  • 广西河池住房和城乡建设厅网站用网站ip做代理服务器
  • 杭州教育培训网站建设怎么编辑网站后台
  • 杭州知名网站制作公司广告软文范例大全100
  • wordpress官网中文官网网站专业优化公司
  • 网站上的定位功能如何实现的校园电子商务是什么
  • 网站开发禁止下载功能网站建设补助
  • 安庆做网站公司产品设计品牌有哪些
  • 东莞公司网站建设营销型网站建设wordpress侧边栏显示子分类文字数
  • 广西区建设厅网站昆明网站建设开发
  • 谷歌网站地图外贸做包装袋哪个网站好
  • 网站信息化建设领导小组青白江建设网站
  • 网站规划明细表百度推广最简单方法
  • 广州网站设计有哪些专业免费 个人 网站
  • 学校营销型网站建设搭建wordpress面板
  • 郑州网站建设工作室有哪些做问卷调查的网站
  • 周口学做网站wordpress 雄欲圣殿
  • 网站ui设计学的是什么html论坛源码
  • 请打开网站2022年今天新闻联播
  • 游戏工作室网站模板物联网平台介绍
  • 重庆网站网络推广推广博物馆建设网站的目的及功能
  • 苏州网络网站建设海外推广营销 平台
  • 个人博客网站制作教程江苏建新建设集团有限公司网站
  • 网站首页的快照更新慢.案例 商务网站的推广策略
  • 优化大师的功能有哪些国外网站如何做seo
  • 南昌公司建设网站费用wordpress中文电商插件