问题标签 [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.
java - 如何使 Loadtime-AspectJ 在小程序中工作
由于 AspectJ LoadTime-Weaving 需要使用代理/它自己的类加载器加载 JVM - 有没有办法从我的小程序加载/更改用户的 JVM?或者可能就在加载小程序之前(使用父小程序?)
java - 如何在eclipse中调试一系列Aspect?
我有一系列在某些情况下正在执行但在其他情况下没有执行的方面。堆栈通常看起来像这样,不提供上下文信息。似乎也没有我可以启用的任何日志记录。感谢您对此的任何帮助。
aop - AspectJ:切入点中的参数
我正在使用 AspectJ 来建议所有具有所选类参数的公共方法。我尝试了以下方法:
这对于具有至少 2 个参数的方法非常有效:
但它不适用于以下方法:
如何更改我的切入点以建议两种方法执行?换句话说:我希望“..”通配符代表“零个或多个参数”,但看起来它的意思是“一个或多个”......
java - 记录用户操作
客户希望我们“记录”用户在我们系统上执行的“操作”:主要是创建、删除和更新。我已经有一个记录跟踪的方面,但是它在记录每个方法调用的非常低的级别上工作。因此,如果用户单击“打开医疗文件”按钮,日志将显示:
- closePreviousFiles("零号病人")
- createMedicalFile("零号病人") --> file #001
- changeStatus("#001") --> 打开
而期望的结果是:
- 为零号病人打开医疗文件#001
我正在考虑使用日志语句来检测 Struts2 操作,但我想知道......是否有另一种方法可以做到这一点?我可能会再次使用 AspectJ(或过滤器)并将逻辑保留在一个地方,以便我可以轻松配置日志,但我担心一切都会变得更难理解(即“此操作的日志是错误的......我到底应该去哪里找麻烦?”)。
java - 使用连接点调用(* *.*(..)),如果可用,我可以将参数公开给建议吗?
java.util.Set
就我而言,我通过建议对 的实例(尤其是add(Object)
和)的某些方法调用来跟踪某些集合的更改remove(Object)
。由于更改未反映在集合本身中,因此调用Set.contains(Object)
或Set.size()
返回错误结果。
因此,我想拦截对 Set 实例的所有方法调用(除了add
and remove
),并将调用转发到我的最新集合。
当然,我可以使用不同的切入点定义两个建议,如下所示:
它有效,但它非常丑陋,我的建议的主体非常相似。所以我想“组合”它们;有效地为两个切入点编织了一个建议,就像这样:
这可能吗?我感觉不是,因为在其中一个切入点中我公开了参数(随后在建议中使用它),而在另一个切入点中没有参数,因此似乎不可能在封闭建议中绑定“潜在标识符” ......但我希望我忽略了一些事情,你也许能指出我正确的方向。谢谢!
java - 如何使用 aspectJ 快速修改已编译的 java 类行为
如何使用 aspectJ 为某些 java 应用程序临时添加功能?像创建方面,用ajc编译,使用java命令和一些额外的开关来应用方面?
java - 如何使用单独的 jar 覆盖类?
客户需要预览我们产品的新功能。他们要求将该功能以 jar 文件(如补丁)的形式发送给他们。将新类包含在所述 jar 文件中没有问题。但是,修改了现有类,这是集成新功能所必需的。他们只想添加这个新的 jar 文件,而不必更新我们产品的核心类。所以,问题是:是否可以使用单独的 jar 覆盖已经存在的类?如果是这样,怎么做?
提前致谢。
java - 使用 aspectj 分析选定的方法
我想使用 aspectj 来分析一个库。我的计划是用注释标记需要分析的方法:
@Profiled("logicalUnitOfWork")
然后有一个方面会在方法之前和之后触发,这些方法将使用logicalUnitOfWork
来突出显示已分析的内容。
所以,我的切入点看起来像这样。请注意,我在这里没有注释的论据;这是我不知道该怎么做的事情之一:
被分析的方法将被定义如下:
简而言之,我怎样才能将@Profiled
注释的值放入方面?我不需要根据值限制发生的分析,我只需要它对建议可见。另外,我是否需要将注释的保留设置为运行时才能正常工作,还是可以改为使用类级别的保留?
aspectj - 是否有可能获得有关在建议执行切入点中捕获了哪些建议的信息?
我的应用程序中有一个方面可以拦截系统上的每个建议执行。我希望能够像这样确定我的建议执行切入点正在“拦截”哪些建议
//... AdviceInspector.aj 中的一些代码
//... 更多代码
提前致谢
java - Java同步和性能方面
我刚刚意识到我需要在一个方面同步大量数据收集代码,但性能是一个真正的问题。如果性能下降太多,我的工具将被淘汰。我将分别编写整数和长整数以及各种数组、ArrayLists 和 Maps。应用程序的多个线程将进行函数调用,这些调用将被我的方面拾取。我应该注意哪些会对性能产生负面影响的事情?哪些代码模式更有效?
特别是我有一个调用许多其他数据记录方法的方法:
这些方法主要是添加方面字段的增量
我应该单独同步 foo 或 bar、woz 等,还是应该将 bar、woz 等中的所有代码移动到 foo 中并同步它?我应该在this
, 上同步一个专门创建的同步对象:
(见这篇文章),或方法中的单个数据元素: