问题标签 [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.
spring - 收集 AspectJ 切入点上下文并避免提及建议方法的所有参数的问题
我使用AspectJ来检查对象是否属于当前用户。建议的方法实际上是一个 Spring MVC 控制器方法。我使用放置在该控制器方法上的注释来应用横切安全建议。
我遇到的问题是控制器方法有很多参数。我想避免提及 aspectJ 源代码中的所有参数,因为它们可能会改变(参数名称、类型等),但我仍然必须收集切入点上下文。
总结该方法中存在的 N 个参数,我只需要使用两个(成员和广告 ID)。我怎样才能避免提及 N 个论点?
我的切入点:
我的建议:
注释:
最后,建议的控制器方法:
spring - 围绕 Hibernate 返回的对象的 Spring AOP 建议
Spring AOP 建议不要围绕 hibernate 返回的对象的方法启动。
在我的程序中,休眠返回 CFolder 类型的对象列表。
我想要的是当有人在休眠返回的 CFolder 对象上调用 getName() 方法时,我希望 Spring AOP 编写“在 getName() 之前”和“在 getName() 之后”。
CFolder 代表文件夹
查找所有 CFolders 的存储库类
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 拆分为较小的部分:
- 根配置.xml
- tx-context.xml
- aop-context.xml
- 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.
java - 如何编写正确的切入点来匹配接口返回对象?
我不知道这是否可能,但我正在尝试编写一个切入点,该切入点将匹配任何返回实现特定接口的对象的方法。
鉴于以下情况:
和可审计的接口:
还有一些随机类:
如何编写一个“AfterReturning”切入点来捕获任何实现 Auditable 的名为 getNew* 的方法?
以下作品:
但是,这将匹配任何返回类型。以下不起作用:
我想我可以使用 if() 来编写它,但这似乎有点笨拙(我还没有尝试过)。还是有更优雅的方式?
java - Spring切入点指示符差异(内部与执行)
请...有人可以解释一下使用以下弹簧切入点指示符有什么区别吗?
使用“在切入点指示符内”:
使用“执行切入点指示符”:
我在我的网络项目中使用第二个(我认为它是最常用的),我发现这种方法的问题是它在堆中消耗了大量内存......
在使用“eclipse 内存分析器”分析应用程序服务器的“堆转储”后,我发现我的应用程序消耗了 450 MB,而“类"org.springframework.aop.aspectj.AspectJExpressionPointcut
”的实例消耗了 450MB 的 30%...
每个实例AspectJExpressionPointcut
占用 6 MB(大约),这是因为每个实例都维护一个与 java.lang.reflect.Method 实例匹配的缓存,并且令人惊讶的是缓存了很多 java 方法(我的切入点表达式没有提到的方法)。
阅读 Spring 文档后,我决定使用第一种方法(在切入点指示符内),现在每个实例AspectJExpressionPointcut
占用的内存要少得多。
问题是关于那个......他们之间的表现有什么区别......
提前谢谢了...
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.
java - 将注解对象绑定到通知正文
我能够获得@annotation 切入点来满足我的基本需求。
但是当我尝试将它绑定到下面的建议正文时,我得到了IllegalArgumentException
.
例外:
完整跟踪:
在这种情况下,我是否不恰当地使用了切入点?
get - 如何编写 Get() 切入点来检索 AspectJ 中程序中已使用的属性
我已经编写了以下切入点,但它给出了运行时错误(线程“main”java.lang.StackOverflowError 中的异常)
切入点 traceAttribs():(get(* *));
spring - 建议在 getter 函数上无法正常工作后的 Spring AOP
在 Spring Framework 中,我在使用 AOP 时遇到了一个奇怪的问题。我有以下简单的 bean 类作为问候语:
下面的弹簧配置:
AOP 建议方法:
测试类:
输出:
问题:
当我使用 getter 作为切入点时,为什么会打印两个建议(之前和之后)。当我在 displayGreeting() 方法上使用切入点时,建议可以正常工作??
java - 为什么我的切入点不建议在另一个方面声明的方法?
我正在为我的应用程序使用 Roo 和编译时间编织。Roo 生成的类之一是我的UserIntegrationTest
:
大部分代码都在 Roo 生成的 ITD 中:
我已经编写了自己的方面来处理我的@RequiredUserDetails
注释。我的切入点指定@Test
了一个类中任何用@RequiredUserDetails
. 尽管切入点适用于主类中声明的任何方法(即:)MyTestMethod()
,但它不会选择 ITD 中的任何方法。
我原以为 Roo ITD 是 CTW,我的观点也适用于这些方法。我假设我的方面是在 Roo 方面之前编织的,因此没有将 Roo 的 ITD 视为我班级的一部分。
有没有办法确保 Roo 的 ITD 在我自己的方面之前编织,或者确保我的切入点也适用于 Roo ITD?
我尝试添加@DeclarePrecedence
到方面的顶部,但要么它没有按我希望的那样工作,要么我没有正确定义它,因为它没有任何区别。