问题标签 [pointcuts]

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 回答
238 浏览

java - 有没有办法改进这个切入点?

我想出了以下用于跟踪方法进入/退出的切入点。它没有损坏,也可以满足我的要求,但是: 1- 我发现它看起来很笨拙或者可能更优雅;2-我不知道它是否防弹。

有什么想法吗?

0 投票
3 回答
4184 浏览

java - 请推荐一些学习切入点表达式的教程

请建议一些学习切入点表达式的教程/备忘单。

0 投票
1 回答
3161 浏览

java - 尝试为包含变量的任何方法匹配 AspectJ 切入点签名

我想创建一个切入点,它与我的 Web 控制器中包含 ModelMap 的任何方法相匹配:

我的问题是这只匹配只有ModelMap 参数的方法,其他的不匹配,因为它们包含太多参数。例如,由于“req”参数,这不会被截获:

有没有办法将所有方法与 ModelMap 参数匹配,而不必为每个可能的参数组合添加切入点委托?

0 投票
1 回答
760 浏览

c# - Spring.Net 公共属性设置器切入点

您是否知道 spring.net 中的任何切入点定义仅拦截公共属性设置器(标准属性和自动实现属性)?

在此之后有没有办法按名称(Id,Version ...)删除某些属性?

是否可以将切入点缩小到某个基类(EntityBase)的子类?

如您所见,我不是 spring.net 切入点的大师 ^^ 但我找不到信息。

其背后的想法是制作一个自动脏标志。在下面的示例中,目标是仅为数据属性设置器设置 IsDirty = True。

我现在在代码中使用定义而不是在 spring 配置文件中,但我认为这两种解决方案都应该没问题。

现有代码:

...

0 投票
2 回答
6504 浏览

java - Spring aop切入点表达式访问方法返回类型

我有一个包含许多方法的服务接口,所有这些方法都接受一个 Request 对象并返回一个 Response 对象。所有请求对象都有一个共同的祖先,所有响应对象都有一个不同的共同祖先(它有一个成功标志和一个消息字段)。

现在我想要一个检查权限等的周围方面,执行服务调用并在任何失败时返回一个带有失败代码的 Response 对象。问题是:我需要知道要创建什么类型的 Response 对象。是否有一个切入点表达式可以让我访问返回类型?大概是这样的吧?

0 投票
1 回答
3070 浏览

java - AspectJ,没有构造函数的通用切入点

我做了一个分析方法:

并将 tld.mycompany.business.aspects.SystemArchitecture 中的切入点定义为

我想分析我的服务层中不是构造函数和异常的所有方法(这样我就不会得到“不支持初始化周围(编译器限制)”和“不支持预初始化周围(编译器限制) “警告)并忽略我在几个中得到的 dataType()。

但是,我仍然收到有关构造函数和异常的警告。它似乎也为几乎所有的 Java 方法提供建议,因此调试我的应用程序几乎是不可能的,因为我为每一行都提供了许多建议。Eclipse 告诉我,仅 profileBusiness 行就有 2747 条建议。

显然我一定是误会了什么,但是什么?我如何才能使其成为 tld.mycompany.business 层次结构中以 Impl 结尾的类中的所有方法(构造函数除外)?

干杯

尼克

0 投票
2 回答
4269 浏览

java - AspectJ:如何获得切入点来建议位于其他项目中的类

这应该很简单。

问题
您如何在一个项目中获得切入点来建议另一个项目中的代码/类?


上下文
我正在 Eclipse 中使用两个项目。为了便于解释,我们称一个科学项目和另一个数学项目,并说科学项目依赖于数学项目,我正在同时开发这两个项目。数学项目是核心产品,在生产中,如果我不修改代码,生活会更轻松。

目前,我正在调试这两个项目之间的交互。为了帮助解决这个问题,我正在编写一个 Aspect(在科学项目中)以在数学代码(和科学代码)执行时记录关键信息。


示例
我按照以下方式运行一个简单的示例方面:


问题
问题是,无论我创建什么切入点,它都只建议来自科学项目的代码。没有任何课程org.math.example是横切的,根本没有!

我尝试通过转到并单击添加项目并选择数学项目将数学项目添加到科学项目的路径中。那没有用,但似乎我需要按照这些思路做一些事情。proect properties > AspectJ Build > Inpath

在此先感谢您的任何建议...

-g男性


编辑 1:
自从写这篇文章以来,我注意到该项目出现以下错误:

所以也许这是正确设置的并且错误更加微妙。顺便说一句,可以这么说,提到的课程来自“科学项目”。即使在我清理项目之后也会发生这种情况。我目前正在谷歌搜索这个错误......


编辑 2:我在此处的评论 #5
中找到了上述错误的解决方案

问题是 maven-aspectj-plugin 的 pom 文件声明了对 aspectjtools 版本 1.6.7 的依赖。因此,在配置插件时,必须修改临时依赖项。这是通过指定版本 1.6.9 而不是 1.6.7 来解决问题的 pom 文件的相关代码片段:

0 投票
1 回答
690 浏览

java - AspectJ 与切入点混淆

如何表达仅在从另一个方法中调用而不是直接调用时才找到方法的切入点?

例如:

我只希望切入点在 Foo() 中工作

我尝试了“代码内”,但这似乎只能直接工作。

谢谢埃里克

0 投票
2 回答
327 浏览

aop - 切入点和面向方面的编程

在面向方面的编程语言中如何使用切入点将功能添加到现有程序中?

据我了解,来自这篇维基百科文章 - http://en.wikipedia.org/wiki/Pointcut

切入点被放置在一段代码中的特定位置,当到达该点时,基于对切入点的评估,可以根据切入点的评估在代码中某处的特定点执行更多代码。这是一个正确的理解吗?

如果是这样,那么这将增加功能,因为程序员可以根据该评估执行不同的代码。

0 投票
1 回答
559 浏览

java - 我可以使用 AspectJ 切入点在执行之前修改已执行的 SQL

我正在尝试将一段特定的 SQL 添加到使用 AspectJ 在系统中执行的所有 SQL 中。

我以前没有使用过 AspectJ,但我相信我需要做的是创建一个切入点

调用(PreparedStatement Connection.prepareStatement(字符串))

并提供建议

before(Connection con, String sql): call(PreparedStatement Connection.prepareStatement(String)) && target(con) && args(sql) { sql = "exec myStordProc();" + sql; }

之后 Connection.prepareStatement() 方法将继续使用更改后的字符串吗?

或者我应该拦截对 prepareStatement 和 executeQuery 的调用并创建一条建议,将其更改为 addBatch() 添加我存储的过程调用作为第一批 sql,然后最终使用 executeBatch() 执行原始 sql?

任何指针将不胜感激。

谢谢