问题标签 [pointcut]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
351 浏览

spring - Spring AOP:是否可以在导入的类或接口中定义切入点,如何定义?

我正在尝试在所有类上定义一个切入点,或者在 Spring 的导入库中至少定义一个类。但是,当我运行应用程序时,我得到

0 投票
1 回答
679 浏览

spring - 在 HttpServletResponse sendRedirect 编译但未触发的切入点之前

我目前正在尝试使用aspectj和spring aop围绕对HttpServletResponse.sendRedirect(api文档http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html )的调用添加一个切入点。类和切入点的代码如下:

目前虽然上面的代码可以编译,但它实际上并没有执行(这可以从日志中缺少警告输出和建议代码中的调试断点永远不会被击中来证明)。

虽然为了简单起见我在这里省略了它们,但方面包含其他正确触发的切入点,所以我已经排除了方面配置作为潜在原因(这就是为什么我不包括我的 spring bean 配置)。

此外,我通过调试仔细检查了在测试切入点时正在调用实现 HttpServletResponse.sendRedirect() 的类(如果有帮助,则调用的实现类之一是 org.apache.catalina.connector.Response https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/Response.html)。

在围绕接口定义切入点时,我的切入点定义中是否缺少某些内容?最好我可以从 Spring AOP 文档中看出它不需要任何特殊的语法。

我一直在玩切入点定义的变化,但还没有运气。

总而言之,我被难住了,有什么想法吗?

0 投票
1 回答
544 浏览

java - 无论如何要为类成员的方法创建一个切入点?

给定一个有一堆成员的类,每个成员都有自己的 getter/setter/etc 方法,有没有办法设计一个切入点,当包含在父类中时,它只会触发成员的方法?

例如:

如果我想创建一个切入点来建议 myList.add(),有没有办法做到这一点?我不想建议所有 ArrayList.add() 调用。仅适用于属于 MyClass 成员的 Collections.add()。

我试过玩withinand cflow,但无济于事:

但它似乎不起作用。我认为鉴于add()调用实际上不是 get() 控制流的一部分,它似乎没有正确触发。

在玩了一些之后,我注意到以下解决方案似乎有效:

这是正确的实现吗?

我试图将切入点限制为仅在传递 @Entity 对象时建议调用 add() ,但它不起作用。前任:

然而,addPointcut()当使用 @Entity 作为参数调用时,它的工作原理。

参数类型是基于实际调用方法,还是基于add()签名?

编辑

我太快跳到错误的结论。睡觉后,我开始意识到我的切入点不起作用。

我正在寻找一种方法来建议从任何类调用的 add() 方法。但是,我只是希望在 FirstClass 中包含的成员 List 上建议 add() 方法,即使是从 FirstClass 外部调用也是如此。

0 投票
1 回答
60 浏览

java - Spring AspectJ 切点

我需要编写一个单一的切入点来拦截所有类的构造函数。实际需要的是拦截除了 init() 和构造函数之外没有其他方法被调用的所有 bean。对于 init,它是直截了当的。但是由于构造函数名称会随着类名称的变化而变化,因此编写单点切割变得越来越困难。

任何帮助,将不胜感激...

0 投票
1 回答
9778 浏览

java - java.lang.IllegalArgumentException:错误引用的类型不是注释类型

我得到了以下建议:-

在 LoggerAspect 类中:

和这个注释:

堆栈跟踪 :

我得到错误:java.lang.IllegalArgumentException:错误类型不是注释类型:可记录

为什么 Loggable 没有注解?它标有@interface

0 投票
3 回答
6986 浏览

maven - 未应用定义的建议:Aspectj Pointcut

我正在尝试创建一个注释来记录带注释的类中的所有方法,但是我的切入点有问题,它没有应用(AspectJ 版本 1.7.4,aspectj-maven-plugin 版本 1.7)。

切入点:

注解:

谢谢

0 投票
1 回答
351 浏览

hibernate - 使用 AOP 切入点进行休眠分页

是否有任何已知的方法来使用面向方面的注释(或其他任何工作)进行休眠分页,并使用切入点来识别任何给定方法中的 a并将Criteria其应用到API 方法?setFirstResultssetMaxResults

例如,我想在我的休眠GenericDao实现中应用如下分页:

并且@Paginate注释将适用setFirstResultssetMaxResults通话criteria.list()。这可能吗?

注意:@Paginate是我想使用的一个例子。

0 投票
1 回答
1627 浏览

java - Aspectj - 如何从同一个建议中调用建议方法,而不触发无限循环

我想使用 AspectJ 记录我在代码中进行的所有方法调用,除了记录器中的方法调用。

类中的第一个建议工作正常(它将每个方法调用写入控制台),第二个建议在调用 org.myDomain.utils.Utils.printToConsole() 方法时导致无限循环,这是由调用建议建议的。

我发现这是一个常见问题,如链接 http://www.eclipse.org/aspectj/doc/released/faq.php#q:infiniterecursion中所述, 但我不明白如何编写切入点所以一个无限循环不会被创建。

帮助

0 投票
2 回答
670 浏览

spring - 我们可以将多个切入点映射到单个建议吗

在 aspectj 中,我们可以将多个切入点映射到单个通知吗?

例如下面是两个单独的切入点

那么任何人都可以给出如何在一个建议上配置这两个切入点的想法吗?

因为对于像下面这样的单个切入点,我们有

如何为多个切入点配置相同的建议?

0 投票
2 回答
2693 浏览

spring - spring AoP,具有相同参数类型的重载方法的切入点表达式

我已经为评论上的 CRUD 操作定义了一个类。读取方法被重载。

我尝试过的切入点表达式是

问题:由于 userId 和 subjectId 的数据类型相同,点表达式应用于方法 2 时会将参数值移动 1 位。这意味着,表达式不理解第一个参数 userId 未传递。相反,userId 将“subjectId”作为值,而 subjectId 将相邻参数“param”作为其值。

笔记

  1. 我试图避免编写另一种方法,例如 findUserComments()。

  2. 我想在整个应用程序中保持一致性。还有其他类具有类似的 CRUD 操作模式。

问题:是否可以定义一个适用于这两种方法的表达式,第一个参数 userId 是可选的?

编辑 - 解决方案 当我按照以下解决方案中的建议使用不同的方法时,我终于删除了方法 2。我在方法 1 中处理这种情况。