问题标签 [pointcut]

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 投票
0 回答
68 浏览

ruby - 纯 Ruby AOP(用于收集有关用户交互的分析)

嗨,我的应用程序已经太复杂了,无法在其中添加一些分析代码。

我真的很想设计一些特殊的类,允许我插入一些 AOP 切入点(这会触发一些混合面板)。

我不想用宝石,只用纯红宝石。有模块、关注点、元编程等等。

仅使用之前,周围,之后的回调是不够的,例如,我想插入一个条件。

任何想法?谢谢

0 投票
1 回答
144 浏览

java - Get the value of the accessed field within a get pointcut

I have a pointcut which listens to access to an field in DBRow and all subclasses

I now need to determine the value of the accesed field, that is specified by the get pointcut. Is this possible in AspectJ?

0 投票
1 回答
29 浏览

java - 我正在寻找 AspectJ 中的特定切入点

该行:

将导致如下流程:

在方面J。是否有一个将测试作为目标的切入点(例如 before-get test.adddres 和 after-get test.address)但会在 "after-set test.address.postal_code" 之后发生?

0 投票
2 回答
4971 浏览

java - 抽象超类中实现的超接口方法方面

我有一个非常相似的问题:How to create an aspect on an Interface Method that extends from A "Super" Interface,但我的保存方法在抽象超类中。

结构如下——

接口:

实现:

我想检查对该ServiceInterface.save方法的任何调用。

我目前的切入点如下所示:

当 save 方法被放入时它会被触发ServiceImpl,但不是在SuperServiceImpl. 我的周围切入点缺少什么?

0 投票
1 回答
2960 浏览

spring - 涉及忽略类的 Spring 切入点

我对 Spring AOP 中的所有类都有一个切入点,比如

@Pointcut("执行(* com.company.app..*(..))")

现在我需要排除一个类,比如 com.company.app.IgnoreClass。有人可以帮我写切入点吗?

0 投票
0 回答
912 浏览

spring - Spring性能拦截器不使用log4j2记录

我已经使用 spring aop t 来记录服务执行的时间,但它没有记录。我也没有任何例外。帮我解决这个问题,无论是 log4j2 配置的问题还是切入点表达式的问题。

以下是我的 application-context.xml

以下是我的 log4j2.xml

0 投票
1 回答
591 浏览

java - 阅读和理解 AspectJ 切入点?

这个切入点,命名为服务,在服务器对象调用它们的公共方法时挑选出程序执行中的那些点。它还允许使用服务切入点的任何人访问正在调用其方法的 Server 对象。(取自https://eclipse.org/aspectj/doc/released/progguide/language-anatomy.html

我正在尝试理解 AspectJ 的切入点,目前有点困惑。我的主要问题是:您如何阅读上述切入点,以及如何将其含义“拼凑”在一起?

为了说明我的困惑,让我们尝试从头开始构建:

以下切入点将拦截对任何对象的所有公共方法调用,对吗?

现在,这个呢:

我假设在调用 Server 对象的公共方法时会拦截任何点。

现在,我如何从这里到达初始示例 0?我如何阅读它?

在构建切入点时,您会先提供参数列表吗?

和上面的2一样吗?(我感觉它不起作用,如果它起作用了,它会“拦截”每个公共方法调用,就像数字 1 一样。)无论如何,以下内容是否相同?(我s还没有用原生切入点“捕获”,所以我不能真正定义它,可以吗?)

或者你会从指定一个原生切入点开始,以“捕获”目标对象,如下所示:

我想这仍然会拦截任何对象上的所有公共方法调用?

下面的工作是否只能拦截对 Server 对象的调用,并“捕获”该对象(而不使其可用于稍后传递,例如传递给通知)?

现在,回到原来的切入点:

是不是一样

所以,总结一下:你如何开始破译 0?

您是否首先查看target切入点,然后查看切入点的参数类型services并“从内到外”/“从右到左”阅读它?还是先看参数列表,再看services切入点,看看参数是从哪里来的(即target(s))?

还是我让这太复杂了?我是否在某处遗漏了重要信息来帮助我理解这一点?

编辑:手册从左到右解释它 - 但是Server s如果我还没有“执行”,参数的参数来自target(s)哪里?

0 投票
1 回答
152 浏览

java - AspectJ creates plenty of methods on pointcut

I am new to AOP (using AspectJ / ajc) and have searched / googled the internet high and low searching for an answer to my puzzle. Hopefully, someone here might have it.

As I was given to understand by the documentation, AspectJ is suppose to inject code. From my experience, however, it seems like it is mostly adding code (and simply makes an exchange of method calls).

For example, if I have the method:

And I define the following around advice for it (with a dummy random in order to manipulate proceed() vs. some other return value):

I get the following after decompiling using jd-gui:

If that right? Am I perhaps doing something wrong?

I tried using ajc with my android application, but thanks to some jars and SDKs, I got to the dreaded "too many methods" problem.

I am using call pointcuts for most of the time, however it seems that these extra methods are added for each call, even if done within the same class and method, thus increasing my code size and method count significantly.

Any help understanding if this is correct and how it works will be greatly appreciated!

0 投票
1 回答
102 浏览

java - 如何使用 aspectJ 使我的 JLabels 变红?

我的项目有一个 MessageUtil 类,它具有显示消息的方法,我正在尝试使用 aspectJ 使我的 Jlabels 的文本变为红色,而不使用 aspectJ,将“for loop”添加到使 multiLabel 的方法之一就足够了短信:

createMultiLabelByPixel(msg) 和 createMultiLabelBySlashN(msg) 这两个方法的形式如下:

我想使用aspectJ来使JLabels变红,而不是在方法createMultiLabel的主体中使用for循环,我不知道如何做到这一点,我正在尝试使用pointCut制作一个包含aspecJ注释的类下面在消息发送到 createMultiLabelBySlashN() 和 createMultiLabelByPixel() 作为参数之前使数组消息变为红色,但我不知道它是否正确或如何从我的 aspectJ 中的 createMultiLabel 方法定义 JLabel messages[]类使用相同的 for 循环使其变为红色,并将字符串 rezult 发送到 createMultiLabelBySlashN。

即使当我调用 pointCut 时,我的代码似乎也存在错误:

0 投票
1 回答
741 浏览

java - 匹配AspectJ中的类时*+和*之间的区别?

鉴于这些切入点取自以下资源:

http://maverick-amey.blogspot.ru/2007/12/using-cflow-and-cflowbelow-in-pointcuts.html

methodCallFromWebTier切入点应该匹配对类的任何公共方法的所有调用Foo返回 void 的任何参数,前提是&&运算符)该调用位于对以下方法的任何调用的控制流内

  • com.webtier包中的任何类(及其子类) ;
  • com.webtier包中的任何抽象类(其子类) ;
  • com.webtier包中任何接口的com.webtier包中的任何接口实现;

现在,如果切入点是这样的:

因此,如果没有+子类型 TypePattern 运算符,切入点会相同吗?我的意思是,它仍然匹配所有内容(任何类、抽象类子类、接口实现),只要这一切都在com.webtier包中,所以我在这里看不到+号的用法......

我错了吗?是否有一些我可能看不到的边缘情况?

在这个例子中加号真的有必要吗?

感谢关注!