问题标签 [aspectj]

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 投票
2 回答
573 浏览

java - 如何使 Loadtime-AspectJ 在小程序中工作

由于 AspectJ LoadTime-Weaving 需要使用代理/它自己的类加载器加载 JVM - 有没有办法从我的小程序加载/更改用户的 JVM?或者可能就在加载小程序之前(使用父小程序?)

0 投票
1 回答
3036 浏览

java - 如何在eclipse中调试一系列Aspect?

我有一系列在某些情况下正在执行但在其他情况下没有执行的方面。堆栈通常看起来像这样,不提供上下文信息。似乎也没有我可以启用的任何日志记录。感谢您对此的任何帮助。

0 投票
5 回答
25163 浏览

aop - AspectJ:切入点中的参数

我正在使用 AspectJ 来建议所有具有所选类参数的公共方法。我尝试了以下方法:

这对于具有至少 2 个参数的方法非常有效:

但它不适用于以下方法:

如何更改我的切入点以建议两种方法执行?换句话说:我希望“..”通配符代表“零个或多个参数”,但看起来它的意思是“一个或多个”......

0 投票
4 回答
4095 浏览

java - 记录用户操作

客户希望我们“记录”用户在我们系统上执行的“操作”:主要是创建、删除和更新。我已经有一个记录跟踪的方面,但是它在记录每个方法调用的非常低的级别上工作。因此,如果用户单击“打开医疗文件”按钮,日志将显示:

  1. closePreviousFiles("零号病人")
  2. createMedicalFile("零号病人") --> file #001
  3. changeStatus("#001") --> 打开

而期望的结果是:

  1. 为零号病人打开医疗文件#001

我正在考虑使用日志语句来检测 Struts2 操作,但我想知道......是否有另一种方法可以做到这一点?我可能会再次使用 AspectJ(或过滤器)并将逻辑保留在一个地方,以便我可以轻松配置日志,但我担心一切都会变得更难理解(即“此操作的日志是错误的......我到底应该去哪里找麻烦?”)。

0 投票
2 回答
212 浏览

java - 使用连接点调用(* *.*(..)),如果可用,我可以将参数公开给建议吗?

java.util.Set就我而言,我通过建议对 的实例(尤其是add(Object)和)的某些方法调用来跟踪某些集合的更改remove(Object)。由于更改未反映在集合本身中,因此调用Set.contains(Object)Set.size()返回错误结果。

因此,我想拦截对 Set 实例的所有方法调用(除了addand remove),并将调用转发到我的最新集合。

当然,我可以使用不同的切入点定义两个建议,如下所示:

它有效,但它非常丑陋,我的建议的主体非常相似。所以我想“组合”它们;有效地为两个切入点编织了一个建议,就像这样:

这可能吗?我感觉不是,因为在其中一个切入点中我公开了参数(随后在建议中使用它),而在另一个切入点中没有参数,因此似乎不可能在封闭建议中绑定“潜在标识符” ......但我希望我忽略了一些事情,你也许能指出我正确的方向。谢谢!

0 投票
1 回答
1946 浏览

java - 如何使用 aspectJ 快速修改已编译的 java 类行为

如何使用 aspectJ 为某些 java 应用程序临时添加功能?像创建方面,用ajc编译,使用java命令和一些额外的开关来应用方面?

0 投票
5 回答
8790 浏览

java - 如何使用单独的 jar 覆盖类?

客户需要预览我们产品的新功能。他们要求将该功能以 jar 文件(如补丁)的形式发送给他们。将新类包含在所述 jar 文件中没有问题。但是,修改了现有类,这是集成新功能所必需的。他们只想添加这个新的 jar 文件,而不必更新我们产品的核心类。所以,问题是:是否可以使用单独的 jar 覆盖已经存在的类?如果是这样,怎么做?

提前致谢。

0 投票
2 回答
3650 浏览

java - 使用 aspectj 分析选定的方法

我想使用 aspectj 来分析一个库。我的计划是用注释标记需要分析的方法:

@Profiled("logicalUnitOfWork")

然后有一个方面会在方法之前和之后触发,这些方法将使用logicalUnitOfWork来突出显示已分析的内容。

所以,我的切入点看起来像这样。请注意,我在这里没有注释的论据;这是我不知道该怎么做的事情之一:

被分析的方法将被定义如下:

简而言之,我怎样才能将@Profiled注释的值放入方面?我不需要根据值限制发生的分析,我只需要它对建议可见。另外,我是否需要将注释的保留设置为运行时才能正常工作,还是可以改为使用类级别的保留?

0 投票
1 回答
305 浏览

aspectj - 是否有可能获得有关在建议执行切入点中捕获了哪些建议的信息?

我的应用程序中有一个方面可以拦截系统上的每个建议执行。我希望能够像这样确定我的建议执行切入点正在“拦截”哪些建议

//... AdviceInspector.aj 中的一些代码

//... 更多代码

提前致谢

0 投票
5 回答
4497 浏览

java - Java同步和性能方面

我刚刚意识到我需要在一个方面同步大量数据收集代码,但性能是一个真正的问题。如果性能下降太多,我的工具将被淘汰。我将分别编写整数和长整数以及各种数组、ArrayLists 和 Maps。应用程序的多个线程将进行函数调用,这些调用将被我的方面拾取。我应该注意哪些会对性能产生负面影响的事情?哪些代码模式更有效?

特别是我有一个调用许多其他数据记录方法的方法:

这些方法主要是添加方面字段的增量

我应该单独同步 foo 或 bar、woz 等,还是应该将 bar、woz 等中的所有代码移动到 foo 中并同步它?我应该在this, 上同步一个专门创建的同步对象:

(见这篇文章),或方法中的单个数据元素: