首页 > 解决方案 > AspectJ 的“此建议不建议任何方法”

问题描述

在学习了一些关于它的理论之后,我正在尝试使用 AspectJ。

我已经做了一个非常基本的示例,预计会起作用,但在我的方法旁边,我得到了“此建议不建议任何方法”信息消息。

我的代码如下:

@Aspect
public class LoggingAspect {

private static Logger logger = Logger.getLogger(Object.class);

@AfterReturning(pointcut = "execution(* com.ecc.bo.company.Company.getName(..))", returning = "x")
public void logResult(Object x) {
    logger.error("WITH ASPECTS, method returned: " + x.toString());
}
}

我真的不明白为什么,因为包名称在我输入时自动完成。另外,我在上述方法上设置了一个断点以防万一(getName),它确实被调用了。

也许我错过了一些配置步骤,或者我找不到语法错误?

我也尝试过使用超通用版本

execution(* *(..))

但它似乎仍然与任何方法都不匹配。

编辑:这是 Company 类的“有趣”部分:

public class Company {
  private String name;
  public String getName() {
   return name;
  }
}

没有特别的注解,至少没有与 AspectJ 相关的

标签: javaaspectj

解决方案


认为问题可能出在切入点中的点 getName(..) 中,点表示方法获取某些东西,在您的代码中我们可以看到 getName() 没有任何变量,删除点或在方法中设置一些变量。


推荐阅读