如何编写与类中所有公共方法匹配的Spring @AspectJ点剪切(@Pointcut)表达式,而不管它们的参数列表如何?
我想要一个方面,为具有特定注释的特定类的所有公共方法,@MyAnnotation (类似于其他人在a previous SO question中所想要的类似)提供一个切点。目前我的方面是这样的:
@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插件(在源代码窗口中使用箭头注释)指出这是正确的建议方法com.example.Service.getNames()。但它并不表示有参数的方法(如com.example.Service.getTimes(String name) )得到了建议。
这是因为带有@Pointcut注释的方法没有参数吗?我如何才能使切分成为所有的方法,而不管它们的论证列表是什么?或者,对于我的@Pointcut类中的每种参数列表,我必须有一个单独的com.example.Service?
发布于 2013-07-23 17:32:03
测试产生的WAR结果表明,这个方面实际上是有效的,并且我想要成为点削减的服务类的所有方法都是点削减。
我的结论是,这实际上是Eclipse插件中的一个缺陷:当一个@Pointcut匹配多个位置时,它不会显示所有连接点,而是只显示一个连接点,这是它任意选择的。
https://stackoverflow.com/questions/17788803
复制相似问题