@Around("pointCutIAntiResubmit(iAntiResubmit)") public Object aroundAdvice(ProceedingJoinPoint pjp, IAntiResubmit iAntiResubmit) { String key = loadKey(iAntiResubmit.key(), pjp); String redisKey = RedisConstants.ANTI_RESUBMIT_REDIS_KEY + RedisConstants.SEPARATOR + getValue(pjp, iAntiResubmit) + "::" + key; RLock lock = redissonClient.getLock(redisKey); try { Object[] args = pjp.getArgs();// 得到方法执行所需的参数 lock.lock(); return pjp.proceed(args);// 明确调用切入点方法(切入点方法) } catch (SysException se) { throw se; } catch (Throwable e) { throw new SysException(e.getMessage()); } finally { lock.unlock(); } }这里的iAntiResubmit.key()是不是为空
时间: 2024-02-14 08:33:09 浏览: 72
Spring boot学习(六)Spring boot实现AOP记录操作日志.pdf
如果IAntiResubmit注解被正确地使用,并且在使用该注解时为key成员变量显式地赋值,那么iAntiResubmit.key()应该是非空的。
在上面的代码中,通过iAntiResubmit.key()获取IAntiResubmit注解的key成员变量的值,并将其作为loadKey方法的第一个参数。如果IAntiResubmit注解的key成员变量没有显式地赋值,那么iAntiResubmit.key()将返回空字符串,但是在loadKey方法中,空字符串会被视为无效的key值,可能会导致程序出错。
因此,在使用IAntiResubmit注解时,应该为其key成员变量显式地赋值,以确保程序能够正确地执行。
阅读全文