0

如何编写一个 Spring @AspectJ 切入点 ( @Pointcut) 表达式来匹配一个类中的所有公共方法,而不管它们的参数列表如何?

我想要一个对具有特定注释的特定类的所有@AfterThrowing公共方法都有切入点的方面(类似于其他人在之前的 SO 问题中想要的)。目前我的方面是这样的:@MyAnnotation

 @Aspect
 public final class ServiceDataAccessExceptionReporter {

    @Pointcut("execution(public * com.example.Service.*(..)) && @annotation(com.example.MyAnnotation))")
    public void annotatedMethod() {}

    @AfterThrowing(pointcut = "annotatedMethod()", throwing = "exception")
    public void reportException(final DataAccessException exception) {
       ...
    }
 }

Eclipse Spring 插件指示(使用源代码窗口中的箭头注释)这是正确的建议方法com.example.Service.getNames()。但这并不表示com.example.Service.getTimes(String name)已建议具有参数的方法,例如 。

那是因为带有@Pointcut注释的方法没有参数吗?我怎样才能使切入点成为所有方法,而不管它们的参数列表如何?或者我必须为班级@Pointcut中的每种参数列表单独设置一个?com.example.Service

4

1 回答 1

0

测试生成的 WAR 表明该方面实际上是有效的,并且我希望成为切点的服务类的所有方法都是切点。

我的结论是,这实际上是 Eclipse Spring 插件中的一个缺陷:当 a 匹配多个位置时,它不会显示所有连接点@Pointcut,而是只显示一个,它有些随意选择。

于 2013-07-23T17:32:03.457 回答