问题标签 [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.
swift - 如何在创建中定义一个新的 UIvariable 的所有方面?
我正在快速创建一个程序,其中我有一个“Test.swift”,其中包含一个包含一些静态变量的类。这些变量之一是这样UITextField
创建的:
我现在想做的下一件事是给这个 textField1 一些方面,比如字体和背景颜色,比如这个
它不会让我这样做,因为我在一个函数中我仍然在裸类中,现在我有了创建一个静态函数的想法,它比添加所有方面并返回完成的文本字段,但我宁愿做一些像这样 :
这是可以实现的吗?
aspectj - Spring AOP:捕获参数注释的接口方法,但不存在注释
我正在使用 Spring AOP 来拦截方法执行。
我有一个如下所示的界面:
下面是接口的实现:
现在我希望任何具有@AwesomeAnnotation 注释的参数的方法都应该被Spring AOP 捕获。
所以我写了以下有效的方面。
但是,当我尝试查找参数注释时,我没有得到任何注释。如上所述,annotationMatrix 是空的。
所以这是我的问题:
- 为什么 annotationMatrix 是空的?可能是因为参数注释不是从接口继承的。
- 为什么我能够捕获方法执行。由于 Spring AOP 能够匹配切入点,因此 Spring 以某种方式能够看到方法的参数注释,但是当我尝试看到使用
methodSignature.getMethod().getParameterAnnotations()
它时不起作用。
java - instanceof 不能在 Spring 中使用方面
我有一个从工厂获得的 Spring Bean,比如说,
这是因为 Aspects 而发生的吗?因为,我在 GoodStudent 中有一个使用 Aspects(围绕方面)增强的方法,例如,
这是春天的限制还是我错过了什么?
笔记 : System.out.println(astudent instanceof IStudent); // prints true
aspectj - 在 package 和 supackages 上应用 Aspects
我正在使用 AspectJ 将方面应用于包 org.apache.http、org.apache.http.entity、org.apache.http.impl、org.apache.http.io 和其他类似包下的类的方法。
我使用了以下方面,但未应用。
我还尝试按照Aspectj 方面的建议指定多个包,但它没有用。请向我建议我错在哪里?
aop - 使用方面记录对外部代码的调用会导致异常
我正在尝试查找程序中正在调用的所有外部函数的列表。被测程序在包中net.sf.gaeappmanager.google.appengine
,外部函数在.的包和子包中org.apache.http..
。
为此,我编写了以下方面:
但这方面并没有发挥应有的作用。它抛出未处理的异常。如果我只使用System.out.println("Function of http Package")
没有thisJoinPoint
那么它工作正常。
根据@kriegaex 的要求添加了额外信息
我正在使用通过 Evosuite 工具生成的测试用例执行 PUT。首先,我在这里包括测试用例:
当我执行这个测试用例(上面给出的方面)时,我得到了以下异常:
如果我执行相同的测试用例但在方面没有thisJoinPoint,我会得到以下结果:
.
我主要关心的是为什么在方面中添加thisJoinPoint会导致异常以及如何获取程序中所有外部函数的列表。
spring - Spring AOP Aspect 启动时的日志消息
如何在 Spring AOP 方面启动时记录消息?我看到的唯一方法是在每个拦截的方法上指定标志并检查。可能还有其他选择吗?谢谢
java - 如何拦截使用 AspectJ 处理自身异常的方法
当发生某些特定异常时,我正在尝试添加一些监视。例如,如果我有这样的方面:
和测试类:
作为输出,我将得到:
我想知道是否有办法让我在抛出异常后拦截方法执行,在我的建议中做一些事情并继续在相应的 catch 块中执行代码?这样,如果我打电话,divideByZeroWithCatch()
我可以得到:
java - 将方面转换为本机 AspectJ 表示法
我有这个方面:
问题是我想用本机 AspectJ 表示法对其进行编码。
我搜索了,但我得到的最接近的是:
但这给了我一些错误,因为它没有很好地编码。
谁能帮我这个?
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 来实现,这就是我使用的。错误没有意义
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:已检查
启用注释处理选项:选中
项目构建和编译没有问题。它运行起来就像从来没有任何方面一样,没有打印出任何方面的特殊性,也没有创建临时文件,并且所有方法都运行良好(尽管在我周围的“所有”建议中我没有处理关节点)。
当我在任何建议的第一行创建断点并使用调试器运行项目时,什么都没有被捕获。
我错过了什么?