问题标签 [aspects]

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

swift - 如何在创建中定义一个新的 UIvariable 的所有方面?

我正在快速创建一个程序,其中我有一个“Test.swift”,其中包含一个包含一些静态变量的类。这些变量之一是这样UITextField创建的:

我现在想做的下一件事是给这个 textField1 一些方面,比如字体和背景颜色,比如这个

它不会让我这样做,因为我在一个函数中我仍然在裸类中,现在我有了创建一个静态函数的想法,它比添加所有方面并返回完成的文本字段,但我宁愿做一些像这样 :

这是可以实现的吗?

0 投票
2 回答
2415 浏览

aspectj - Spring AOP:捕获参数注释的接口方法,但不存在注释

我正在使用 Spring AOP 来拦截方法执行。

我有一个如下所示的界面:

下面是接口的实现:

现在我希望任何具有@AwesomeAnnotation 注释的参数的方法都应该被Spring AOP 捕获。

所以我写了以下有效的方面。

但是,当我尝试查找参数注释时,我没有得到任何注释。如上所述,annotationMatrix 是空的。

所以这是我的问题:

  1. 为什么 annotationMatrix 是空的?可能是因为参数注释不是从接口继承的。
  2. 为什么我能够捕获方法执行。由于 Spring AOP 能够匹配切入点,因此 Spring 以某种方式能够看到方法的参数注释,但是当我尝试看到使用methodSignature.getMethod().getParameterAnnotations()它时不起作用。
0 投票
0 回答
724 浏览

java - instanceof 不能在 Spring 中使用方面

我有一个从工厂获得的 Spring Bean,比如说,

这是因为 Aspects 而发生的吗?因为,我在 GoodStudent 中有一个使用 Aspects(围绕方面)增强的方法,例如,

这是春天的限制还是我错过了什么?

笔记 : System.out.println(astudent instanceof IStudent); // prints true

0 投票
1 回答
98 浏览

aspectj - 在 package 和 supackages 上应用 Aspects

我正在使用 AspectJ 将方面应用于包 org.apache.http、org.apache.http.entity、org.apache.http.impl、org.apache.http.io 和其他类似包下的类的方法。

我使用了以下方面,但未应用。

我还尝试按照Aspectj 方面的建议指定多个包,但它没有用。请向我建议我错在哪里?

0 投票
0 回答
73 浏览

aop - 使用方面记录对外部代码的调用会导致异常

我正在尝试查找程序中正在调用的所有外部函数的列表。被测程序在包中net.sf.gaeappmanager.google.appengine,外部函数在.的包和子包中org.apache.http..

为此,我编写了以下方面:

但这方面并没有发挥应有的作用。它抛出未处理的异常。如果我只使用System.out.println("Function of http Package")没有thisJoinPoint那么它工作正常。

根据@kriegaex 的要求添加了额外信息

我正在使用通过 Evosuite 工具生成的测试用例执行 PUT。首先,我在这里包括测试用例:

当我执行这个测试用例(上面给出的方面)时,我得到了以下异常:

如果我执行相同的测试用例但在方面没有thisJoinPoint,我会得到以下结果:

.

我主要关心的是为什么在方面中添加thisJoinPoint会导致异常以及如何获取程序中所有外部函数的列表。

0 投票
1 回答
124 浏览

spring - Spring AOP Aspect 启动时的日志消息

如何在 Spring AOP 方面启动时记录消息?我看到的唯一方法是在每个拦截的方法上指定标志并检查。可能还有其他选择吗?谢谢

0 投票
2 回答
9337 浏览

java - 如何拦截使用 AspectJ 处理自身异常的方法

当发生某些特定异常时,我正在尝试添加一些监视。例如,如果我有这样的方面:

和测试类:

作为输出,我将得到:

我想知道是否有办法让我在抛出异常后拦截方法执行,在我的建议中做一些事情并继续在相应的 catch 块中执行代码?这样,如果我打电话,divideByZeroWithCatch()我可以得到:

0 投票
2 回答
105 浏览

java - 将方面转换为本机 AspectJ 表示法

我有这个方面:

问题是我想用本机 AspectJ 表示法对其进行编码。

我搜索了,但我得到的最接近的是:

但这给了我一些错误,因为它没有很好地编码。

谁能帮我这个?

0 投票
0 回答
500 浏览

java - AspectJ java抛出奇怪的错误

我正在尝试使用 AspectJ(不是 spring)将观察者模式实现到我的程序中,并且我尝试编写添加观察者方法,但编译器似乎在抱怨

它抱怨的燕麦是this:execution(com.company.domain.EmployeeController.registerTo(*))

错误是:

它所期待的对我来说毫无意义。我将该声明分成不同的行,这就是我看到它在第二次结束时抱怨的方式,(com.company.domain.EmployeeController.registerTo(*)--->)<---这就是括号。我不知道为什么它在抱怨

我尝试更改 aspectj 版本,但这无济于事。将参数更改为除 * 之外的任何其他参数只会使其抛出不同的版本,因此我无法弄清楚为什么它不喜欢它。

删除方法并尝试运行方面是行不通的,因为这样整个事情就没有意义了,我也不知道如何调试它。

我还没有弄清楚发生了什么。我将在这里发布整个方面,也许几天后人们可以找出原因,我仍然无法找出为什么我的程序在考虑所有方面都拒绝工作。

对于 AbstractObserver 部分,我有这个:

我相信在这里after(Subject employee, Observer handler)我应该使用实际实现主题/观察者的类,但方面拒绝这样看待它们(它没有看到它们实现的方法)所以我不知道它是否对 findign 有任何影响otu 为什么我有这个问题。正如我所听说的,观察者模式只能使用 aspectj 来实现,这就是我使用的。错误没有意义

0 投票
1 回答
8417 浏览

java - IntelliJ IDEA + AspectJ

我正在尝试在 IntelliJ IDEA 的示例项目中使用 AspectJ。我有使用 Spring AOP 的经验,但这是我第一次使用 AspectJ,并且无法使其工作。

我正在尝试按照此处所述进行操作:https ://www.jetbrains.com/help/idea/2017.1/aspectj.html

我的 build.gradle:

我的方面:

示例类:

我有 IntelliJ IDEA Ultimate 2017.2,它正确地暗示所有方法(getter 和 setter)都是我的切入点。它还暗示我,对于我的建议“日志”,有多个切入点。但是,它并没有暗示“所有”建议。

我已经安装了(最新版本的)插件,例如: - AspectJ Support - AspectJ weaver - Spring AOP/@AspectJ

Gradle 依赖项自动为这个项目创建了库,所以我没有复制它。

我启用了:Build > AspectJ weaving。

设置 > 构建、执行、部署 > 编译器 > Java 编译器:

使用编译器:ajc

Ajc 编译路径:/home/me/.gradle/caches/modules-2/files-2.1/org.aspectj/aspectjtools/1.8.10/5c5957ee4615bde33b54ce965f5b85b8827b97d5/aspectjtools-1.8.10.jar

命令行参数:空

生成调试信息:选中

委托给 javac:已检查

启用注释处理选项:选中

项目构建和编译没有问题。它运行起来就像从来没有任何方面一样,没有打印出任何方面的特殊性,也没有创建临时文件,并且所有方法都运行良好(尽管在我周围的“所有”建议中我没有处理关节点)。

当我在任何建议的第一行创建断点并使用调试器运行项目时,什么都没有被捕获。

我错过了什么?