您的位置:首页 > 其它

关于注解【Annotation】的一点点个人理解

2019-05-21 15:43 169 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/liu_Alex/article/details/90407599

大家好,我叫【坨坨 】,找我爸爸打游戏,你得先问问我,不然我可能会汪汪朝你叫。

[code]/**
* 我的管辖范围是apis下的请求
*/
@Pointcut("execution(public * com.example.web.apis..*.*(..))")
public void watchingYou() {
}

我在爸爸身上做了标记【@Daddy】,因为这个家伙回家比较晚,只能在晚上九点半下班到睡前陪你们打游戏了。

[code]    @RequestMapping("papa")
@Daddy(gameTime = "2130-2300")
public String papa() {
return "是时候展现真正的技术了。。。";
}

等你一找我爸打游戏,我得先看看你找的是不是我爸,再帮你查查我爸行程,我妈状态。这里的情况就很复杂了,我在这不一一列举了。

[code]@Component
@Aspect
public class TuoTuo {
/**
* 我的管辖范围是apis下的请求
*/
@Pointcut("execution(public * com.example.web.apis..*.*(..))")
public void watchingYou() {
}

@Around("watchingYou()")
public Object whenIn(ProceedingJoinPoint joinPoint) throws Throwable{
Daddy approved = ((MethodSignature) joinPoint.getSignature()).getMethod().getAnnotation(Daddy.class);
if (approved != null) {
String gameTime = approved.gameTime();
if (!canPlayWithYou(gameTime)) {
return "妈妈暴走中," + approved.gameTime() + "再来约";
}
}
return joinPoint.proceed();
}

/**
* @param gameTime
* @return
*/
private boolean canPlayWithYou(String gameTime) {
System.out.println("游戏时间为:" + gameTime);
return new Random().nextBoolean();
}
}

 

结果大概就是

 

----------------------------------------------分割线------------------------------------------------

言归正传,注解可能本身没有太多的实际功能。说到底他只是个标签。只有当一个功能,去识别这个标签,并赋予他相应的功能权限时,注解才有了他的意义。当然,这个被注解标记的模块,如果超出了识别注解的范围,那也就变得毫无意义了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: