问题标签 [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 投票
1 回答
190 浏览

spring - 收集 AspectJ 切入点上下文并避免提及建议方法的所有参数的问题

我使用AspectJ检查对象是否属于当前用户。建议的方法实际上是一个 Spring MVC 控制器方法。我使用放置在该控制器方法上的注释来应用横切安全建议。

我遇到的问题是控制器方法有很多参数。我想避免提及 aspectJ 源代码中的所有参数,因为它们可能会改变(参数名称、类型等),但我仍然必须收集切入点上下文。

总结该方法中存在的 N 个参数,我只需要使用两个(成员和广告 ID)。我怎样才能避免提及 N 个论点?

我的切入点:

我的建议:

注释:

最后,建议的控制器方法:

0 投票
1 回答
95 浏览

spring - 围绕 Hibernate 返回的对象的 Spring AOP 建议

Spring AOP 建议不要围绕 hibernate 返回的对象的方法启动。

在我的程序中,休眠返回 CFolder 类型的对象列表。

我想要的是当有人在休眠返回的 CFolder 对象上调用 getName() 方法时,我希望 Spring AOP 编写“在 getName() 之前”和“在 getName() 之后”。

CFolder 代表文件夹

查找所有 CFolders 的存储库类

0 投票
1 回答
1074 浏览

spring-aop - 不触发切入点

我有一个 Spring 3.2.4 MVC 应用程序,我想使用 Spring AOP。因此,我创建了一个带有<aop:aspectj-autoproxy />.

我还写了一个 Aspect (采用在网络上找到的代码):

(我实现构造函数只是为了查看 bean 是否在 TOMCAT 启动期间被实例化……确实如此!

但是,每当我输入 LoginLogoutController 的登录方法时,我的 Aspect 的 xyz 方法都不会执行。我的Pointcut的表达是不是错了?

我如何告诉 Spring 执行我的建议?

我的控制器:

aop_config.xml:

appConfig-context.xml:


我已将大型 appConfig-context.xml 拆分为较小的部分:

  1. 根配置.xml
  2. tx-context.xml
  3. aop-context.xml
  4. appConfig-context.xml(DispatcherServlet 的 MVC 上下文)

虽然在 web.xml 中有这个:

at least the aop-context.xml seems not to be considered. When I import aop-context.xml in appConfig-context.xml using <beans:import resource="../aop-context.xml"/> I always get a

HTTP Status 404 - /bar/WEB-INF/views/.jsp

type Status report

message /bar/WEB-INF/views/.jsp

from TOMCAT in the browser. description The requested resource is not available.

0 投票
2 回答
158 浏览

java - 如何编写正确的切入点来匹配接口返回对象?

我不知道这是否可能,但我正在尝试编写一个切入点,该切入点将匹配任何返回实现特定接口的对象的方法。

鉴于以下情况:

和可审计的接口:

还有一些随机类:

如何编写一个“AfterReturning”切入点来捕获任何实现 Auditable 的名为 getNew* 的方法?

以下作品:

但是,这将匹配任何返回类型。以下不起作用:

我想我可以使用 if() 来编写它,但这似乎有点笨拙(我还没有尝试过)。还是有更优雅的方式?

0 投票
2 回答
13026 浏览

java - Spring切入点指示符差异(内部与执行)

请...有人可以解释一下使用以下弹簧切入点指示符有什么区别吗?

使用“在切入点指示符内”:

使用“执行切入点指示符”:

我在我的网络项目中使用第二个(我认为它是最常用的),我发现这种方法的问题是它在堆中消耗了大量内存......

在使用“eclipse 内存分析器”分析应用程序服务器的“堆转储”后,我发现我的应用程序消耗了 450 MB,而“类"org.springframework.aop.aspectj.AspectJExpressionPointcut”的实例消耗了 450MB 的 30%...

每个实例AspectJExpressionPointcut占用 6 MB(大约),这是因为每个实例都维护一个与 java.lang.reflect.Method 实例匹配的缓存,并且令人惊讶的是缓存了很多 java 方法(我的切入点表达式没有提到的方法)。

阅读 Spring 文档后,我决定使用第一种方法(在切入点指示符内),现在每个实例AspectJExpressionPointcut占用的内存要少得多。

问题是关于那个......他们之间的表现有什么区别......

提前谢谢了...

0 投票
1 回答
3708 浏览

java - Java - Spring AOP Pointcut not working

Can someone pinpoint what am I doing wrong? How can I make my Aspect run?

I have written this code following some examples:

My simple test class:

My Spring xml config:

And my main method:

So before running my project, Eclipse gives me this error(it marks red void word for log method):

When I run, my program runs without errors, because it looks like log method never ran. So how could I fix it so it would run and output log? I tried simply to print test text from that method, but it never does, so it means it never runs. What am I missing here?

In documentation it only writes vague examples like:

But I find it hard to understand how to actually use it to see results.

0 投票
1 回答
2279 浏览

java - 将注解对象绑定到通知正文

我能够获得@annotation 切入点来满足我的基本需求。

但是当我尝试将它绑定到下面的建议正文时,我得到了IllegalArgumentException.

例外:

完整跟踪:

在这种情况下,我是否不恰当地使用了切入点?

0 投票
1 回答
49 浏览

get - 如何编写 Get() 切入点来检索 AspectJ 中程序中已使用的属性

我已经编写了以下切入点,但它给出了运行时错误(线程“main”java.lang.StackOverflowError 中的异常)

切入点 traceAttribs():(get(* *));

0 投票
1 回答
559 浏览

spring - 建议在 getter 函数上无法正常工作后的 Spring AOP

在 Spring Framework 中,我在使用 AOP 时遇到了一个奇怪的问题。我有以下简单的 bean 类作为问候语:

下面的弹簧配置:

AOP 建议方法:

测试类:

输出:

问题:

当我使用 getter 作为切入点时,为什么会打印两个建议(之前和之后)。当我在 displayGreeting() 方法上使用切入点时,建议可以正常工作??

0 投票
1 回答
223 浏览

java - 为什么我的切入点不建议在另一个方面声明的方法?

我正在为我的应用程序使用 Roo 和编译时间编织。Roo 生成的类之一是我的UserIntegrationTest

大部分代码都在 Roo 生成的 ITD 中:

我已经编写了自己的方面来处理我的@RequiredUserDetails注释。我的切入点指定@Test了一个类中任何用@RequiredUserDetails. 尽管切入点适用于主类中声明的任何方法(即:)MyTestMethod(),但它不会选择 ITD 中的任何方法。

我原以为 Roo ITD 是 CTW,我的观点也适用于这些方法。我假设我的方面是在 Roo 方面之前编织的,因此没有将 Roo 的 ITD 视为我班级的一部分。

有没有办法确保 Roo 的 ITD 在我自己的方面之前编织,或者确保我的切入点也适用于 Roo ITD?

我尝试添加@DeclarePrecedence到方面的顶部,但要么它没有按我希望的那样工作,要么我没有正确定义它,因为它没有任何区别。