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

aap手机网站建设一个主体可以备案几个网站

aap手机网站建设,一个主体可以备案几个网站,为什么学网站开发,专业的公司网页制作文章目录 前言代码实现依赖引入自定义分布式锁注解aop切面切点处理逻辑 自定义锁注解的使用不使用el表达式解析使用EL表达式解析 前言 在分布式锁的实现中#xff0c;通常会使用Redisson实现。但每次使用都会写下面的这种逻辑。 RLock rLock null; try {rLock redissonCli… 文章目录 前言代码实现依赖引入自定义分布式锁注解aop切面切点处理逻辑 自定义锁注解的使用不使用el表达式解析使用EL表达式解析 前言 在分布式锁的实现中通常会使用Redisson实现。但每次使用都会写下面的这种逻辑。 RLock rLock null; try {rLock redissonClient.getLock(lockKeyExpr);boolean lockFlag rLock.tryLock(waitTime, timeUnit);if (!lockFlag ) {return;} } finally {if (Objects.nonNull(rLock )) {rLock.unlock();} }每次要调用都需要这么写显得很繁琐。故此本篇博客采取自定义注解的方式简化实现逻辑只需要保证在使用处标记对应的注解即可实现。 代码实现 依赖引入 !-- 分布式锁相关 -- dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactIdversion3.16.0/version /dependency自定义分布式锁注解 编写自定义注解需要考虑到EL表达式、超时时间、超时时间单位信息。 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.concurrent.TimeUnit;/*** 分布式锁注解* author xf.wu*/ Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface Lock {/*** spel 表达式* return*/String lockKeyExpr() default redisson_lock;/*** 时间值* return*/long waitTime() default 5000L;/*** 时间单位 毫秒* return*/TimeUnit timeUnit() default TimeUnit.MILLISECONDS; }aop切面切点处理逻辑 注解只是一个标签没有具体的实现逻辑就会毫无用处。 import cn.hutool.core.util.ArrayUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.StandardReflectionParameterNameDiscoverer; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.stereotype.Component; import java.lang.reflect.Method; import java.util.Objects; import java.util.concurrent.TimeUnit;/*** 分布式锁 注解配置 aop * Author xf.wu*/ Slf4j Aspect Component public class LockConfig {private static final String SPEL_STR ^#.*.$;Autowiredprivate RedissonClient redissonClient;/*** rlock 切面切点* param joinPoint 切面切点point* param redisLock rlock 类*/Around(annotation(redisLock))public Object aroundLock(ProceedingJoinPoint joinPoint, Lock redisLock) throws Throwable {log.info(----进入lock-----);String lockKeyExpr redisLock.lockKeyExpr();long waitTime redisLock.waitTime();TimeUnit timeUnit redisLock.timeUnit();Object[] args joinPoint.getArgs();Method method ((MethodSignature) joinPoint.getSignature()).getMethod();// 1、如果未指定key名称给定默认值if (StringUtils.isBlank(lockKeyExpr)) {lockKeyExpr redisson_lock;}// 2、若指定 lockKeyExpr#xxxx 则需要按照spel表达式解析接口传值if (lockKeyExpr.matches(SPEL_STR)) {StandardReflectionParameterNameDiscoverer discoverer new StandardReflectionParameterNameDiscoverer();String[] paraNameArr discoverer.getParameterNames(method);paraNameArr (ArrayUtil.isEmpty(paraNameArr)) ? new String[]{} : paraNameArr;StandardEvaluationContext context new StandardEvaluationContext();for (int i 0; i Objects.requireNonNull(paraNameArr).length; i) {context.setVariable(paraNameArr[i], args[i]);}ExpressionParser parser new SpelExpressionParser();lockKeyExpr parser.parseExpression(lockKeyExpr).getValue(context, String.class);}Object obj null;RLock rLock null;try {lockKeyExpr lockKeyExpr :LOCK_KEY;rLock redissonClient.getLock(lockKeyExpr);boolean lockFlag rLock.tryLock(waitTime, timeUnit);log.info(----- 拿锁{},lockFlag);// 判断是否拿到锁 没有拿到则直接退出避免阻塞if (lockFlag) {// 3、拿到锁则进入对应的service处理方法obj joinPoint.proceed();}} finally {if (Objects.nonNull(rLock) rLock.isLocked() rLock.isHeldByCurrentThread()) {log.info(----- 释放锁);rLock.unlock();}}return obj;} }自定义锁注解的使用 不使用el表达式解析 Lock(lockKeyExprlockname,waitTime4000L)使用EL表达式解析 Lock(lockKeyExpr#user.id,waitTime4000L)
http://www.zqtcl.cn/news/610736/

相关文章:

  • 安徽炒股配资网站开发搭建平台载体
  • 中华建设杂志网站记者黑龙江省建设集团有限公司网站首页
  • 成都络迈品牌网站建设网站建设的行业资讯、
  • 英语网站大全免费赤峰市建设厅官方网站
  • 宁波网站建设熊掌号成都网络关键词排名
  • 织梦网站改版需要怎么做平台设计软件
  • 企业展示型网站网站建设设计
  • 增城网站建设服务网站建设制作设计公司佛山
  • 微网站套餐自媒体网站源码模板dede
  • 企业网站改版升级成都便宜网站建设公司
  • 广州公共资源建设工程交易中心网站新塘做网站
  • 数码港 太原网站开发公司iis 建立子网站
  • 做一个自己的网站需要什么商标设计网站猪八戒
  • 傻瓜式网站建设软件保险预约
  • 网站 备案规定自己做简单网站
  • 网站上怎么做支付接口南乐网站建设
  • 咸阳网站建设公司电话做个公司网站大概多少钱
  • 网站如何做关键词排名点子网创意网
  • 浙江建设培训考试网站河源东莞网站建设
  • 网站移动端做pc端的301跳转哪些网站是增值网
  • wordpress新闻站浙江耀华建设集团网站
  • 网站开发代理企业网站推广技巧和方法
  • 俄语网站开发用模板做的网站多少钱
  • 丽水网站建设公司广州网络公司
  • 做基金的网站哪个好针对大学生推广引流
  • 国外对旅游网站的建设互联网推广和互联网营销
  • 海南省建设厅网站首页有什么做设计的兼职网站
  • 网站导航功能苏州市高新区建设局网站
  • jsp网站 值班多语种网站开发
  • 公司网站英文做电商