【问题标题】:Aspectj pointcut expressionAspectj 切入点表达式
【发布时间】:2015-10-25 08:16:42
【问题描述】:

我在构建 aspectJ 表达式时遇到问题。当从类“Report”调用任何“QueryUtil”方法时,我想运行我的建议。

例如:如果我们在 Report.*() 中调用 QueryUtil.*() -> Advice 会被执行。 如果我们从 AnyOtherClass.* 调用 QueryUtil.*() -> 建议不会执行。

一直在想cflow表达式,但还是没有找到写法。我在想这样的事情:

<pointcut name="scope"
    expression="( cflow(call(* ext.demo.Report.\*(..))) && execution(* ext.demo.QueryUtil.*(..)))"/>

谁能帮我解决这个问题?

【问题讨论】:

    标签: java expression aspectj pointcut


    【解决方案1】:

    你的切入点中唯一奇怪的是我在 cflow 切入点组件中的 * 前面看到的流氓“\”。如果可以的话,我还建议使用 execution() 而不是 call() (通常有很多调用站点需要检测,但只有一个执行站点)。

    cflow(execution(* ext.demo.Report.*(..))) && execution(* ext.demo.QueryUtil.*(..))
    

    如果它不适合您,则将其分解以找出哪个部分有问题。 execution(* ext.demo.QueryUtil.*(..)) 是否符合您的期望? execution(* ext.demo.Report.*(..)) 是否符合您的期望? (我会使用-showWeaveInfo 来检查)

    【讨论】:

    • 对不起,“奇怪的事情”是我在写问题时的错。不知道我为什么要逃跑 *.. 非常感谢您解决了我的问题!它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多