栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带注释的方法或带注释的类中的方法的切入点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带注释的方法或带注释的类中的方法的切入点

不完全是,但是差不多。您将需要两个切入点,两个建议,但是您可以将工作委托给一个方法。看起来像这样:

@Aspectpublic class AnyAspectName {    @Pointcut("execution(@X * *.*(..))")    void annotatedMethod() {}    @Pointcut("execution(* (@X *).*(..))")    void methodOfAnnotatedClass() {}    @Around("annotatedMethod() && @annotation(methodLevelX)")    public Object adviseAnnotatedMethods(ProceedingJoinPoint pjp, X methodLevelX)  throws Throwable {        return aroundImplementation(pjp, methodLevelX);    }    @Around("methodOfAnnotatedClass() && !annotatedMethod() && @within(classLevelX)")    public Object adviseMethodsOfAnnotatedClass(ProceedingJoinPoint pjp, X classLevelX)  throws Throwable {        return aroundImplementation(pjp, classLevelX);    }    public Object aroundImplementation(ProceedingJoinPoint pjp, X annotation)  throws Throwable {        return pjp.proceed();    }}

请注意,除了将

@annotation()
@within()
切入点分开之外,我还对结果切入点添加了限制,以使它们不会太宽。我想您想要 方法执行
连接点,所以我添加了所需的切入点表达式,将其限制为方法执行。他们是匹配的

  1. @X
    在第一个建议中 ,在任何包中的任何类中的任何类中以任何返回类型 注释的任何方法的执行
  2. 在带有
    @X
    _第二个 _注释的任何类中具有返回类型的任何方法的执行

进一步的限制

@within(X)
@annotation(X)
派上用场,因为
@within(X)
它本身会匹配

在类型中使用类型注释定义关联代码的任何连接点

X

其中包括 方法执行方法调用构造函数执行构造函数调用预初始化静态初始化初始化字段集
字段get异常处理程序 类型连接点(并非所有连接点都对 周围的建议 )。同样,

@annotation(X)
本身意味着

主题具有类型注释的任何连接点

X

这也可能意味着前面提到的大多数连接点,具体取决于注释的目标类型。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/494966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号