问题标签 [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.
spring - 为什么用@target 定义的切入点不起作用?
我正在尝试使用 Spring 方面在使用MongoRepository
. 目标是这个接口:
当我使用这个切入点时:
此方法在open
调用方法之前运行正常:
但我希望它只在带有注释的接口上运行,@InSearch
所以我尝试以这种方式定义切入点:
注释定义:
使用此切入点,beforeSavingEntity
不会调用该方法。我在日志上没有任何错误。我不确定我是否理解了@target
关于@within
. 我也试过了@within
,也没有用。
我必须如何定义这个切入点以在实现扩展并用注释save
的接口的类中选择方法执行?MongoRepository
@InSearch
谢谢!
java - 使用自定义注解创建我们自己的切面
我是 Annotations 的新手,也是 StackOverflow 的新手,这是我的第一个问题。我正在尝试编写自定义注释,这将帮助我跟踪和记录方法执行。
例如:
在这里,每当methodA()
执行该方法时,我想记录到一个文件,告诉“我们正在 A 类中输入方法 A”,当方法 A 结束时“我们正在 A 类中退出方法 A”类似这样的内容。我们 vil 有许多类和方法。
我知道这可以使用 AspectJ 来完成。我通过定义切入点和连接点来做到这一点。但我想使用自定义注释来做到这一点。
如果有人可以指导我如何去做这将非常有帮助。
提前致谢。
spring - 在 Jetty 中使用 Spring Aspects
我有一个使用 Spring 3.1 的 Aspects 的应用程序。它与 Tomcat 7 完美运行。建议的方法按预期调用。
我希望它与 Jetty 一起工作。我之前在 Spring 2.0 和 Jetty 中使用过 Aspects,除了添加 JVM 代理之外没有任何重大问题。但是,我对 Jetty 6.22 和我的 Spring 3.1 应用程序不满意。因此,我使用 javaagent 启动 Jetty
-javaagent:./spring-instrument-3.1.3.RELEASE.jar
Spring Instrument jar 在我的 CWD 中。
StackOverFlow 上有一个类似的问题,但没有人能够提出一个有效的答案。
c# - 我可以使用方面自动实现 INotifyPropertyChanged
有没有办法使用 PostSharp 来更改这种代码:
变成类似的东西:
?
java - 切入点可以是动态线程特定的吗?
我想在特定条件下跟踪我所有的公共方法调用。但我希望这种跟踪尽可能少地损害整个系统的性能。
我需要一种方法来动态地“打开”一个切入点,以便仅为指定的线程执行,并且这种打开(和关闭)必须可以从我的代码中动态调用。
即,如果我的Java 代码发现某件事发生了,它会为它自己的线程打开一个切入点。这个切入点将记录所有公共方法调用,并且在一段时间(或一定数量的拦截)之后,切入点会自行关闭。
当然,我可以在建议中调用代码,例如“...getCurrentThread().equals(myMonitoringThread) && monitoringEnabled”,但这意味着建议将针对所有线程的所有公共方法运行,并始终执行此代码肯定会损害整个应用程序的性能。
我想要的是仅在启用的时间内为所选线程隔离性能,并使其余线程不受影响。
有人知道如何做到这一点的技术吗?
谢谢托马斯
javascript - 使用 aspect.around,但检查相互调用的方法
我想为 Dojo 商店运行一些特定put()
的代码。add()
我遇到的问题是,对于 JSON REST 存储,在 JsonRest.jsadd()
中只是一个调用的函数put()
:
因此,如果我使用aspect.around()
with add()
,如果我将代码应用到使用实现add()
为put()
.
请注意,我知道大多数商店都会这样做。我只想保证我的解决方案适用于任何商店,无论是否有方法嵌套。
Dojo自己的Observable.js
也有同样的问题。他们是这样处理的:
我的问题是:是否有一种简单的“短”方法来更改我现有的代码,以便它检查它是否在一个方法内,并避免运行代码两次?
我试了一下,但我最终得到了叮当、笨拙的代码。我确定我错过了一些东西......
这是我现有的代码:
java - 是否有使用方面和注释的数据绑定器?
我想使用swing、spring和hibernate编写一个java应用程序。
我想使用数据绑定器用 bean 的值填充 gui,并且我还希望它反映 gui 中 bean 的更新。
似乎有一种方法可以在春天使用DataBinder,但据我了解,您需要自己在bean中实现属性更改代码,并且您需要将bean的属性连接到setter方法gui 使用我不喜欢的字符串。
我遇到这个是为了防止在 bean 中手动实现属性更改支持:
https://github.com/damnhandy/Handy-Aspects
现在我正在寻找一个可以与它一起使用的数据绑定框架,它还支持注释以最小化和简化活页夹的配置。
我希望我可以使用带有属性名称的注释来注释 gui 的设置器 - 或者,更好的是,如果它与属性具有相同的名称,它会自动连接。
例如,如果我有一个带有属性名称和年龄的 Person 类,我想像这样配置 gui:
有这样的吗?
java - 为什么这个 Spring Aspect 没有像使用方法参数那样打印?
让我先提一下,我面临的问题是方法,从第一个代码块开始,而不是打印
interceptThoughts(String thoughts)
我正在运行Spring in Action的教程。有一个Magician
类implements MindReader
与方法interceptThoughts(String thoughts)
和接口getThoughts()
该方面应该通过方法读取该Volunteer
接口implements Thinker
的思想thinkOfSomething(String thoughts)
我有我的javaBeanConfig
和Magician
Volunteer
我正在尝试运行它以获取在Magician
方法中打印行的interceptThoughts
方法
- 没有错误
- 没有例外
- 包装
@Pointcut(execution(
在Magician
方面是正确的 我的 Spring 配置 xml 中有这两项
/li>
问题是
@Before
从这Magician
方面来说没有按应有的方式打印。我在这里错过了什么吗?为什么不打印?我还有其他方面的方法,它们不带参数并且运行得很好。我没有正确传递参数值吗?
java - Spring:添加事务特定资源
我正在尝试找到一种向现有事务添加/获取资源/状态的方法。这在春天可能吗?
我想要实现的类似于下面的伪代码:
我发现了类似的东西
但是,这会将资源添加到事务的当前线程。有没有办法使资源事务仅受限制?
在我的实际代码中,我使用 spring jdbc 的 DataSourceTransactionManager 作为事务管理器。
在此先感谢您的帮助:)
aop - 面向切面编程中的连接点
我目前正在研究 AOP 及其重要部分,即Advice、Pointcuts和Join Points。我从这个链接中 阅读了关于什么是建议和切入点的非常易于理解的解释。面向方面编程与面向对象编程
但是,我很难理解什么是加入点。根据我的阅读,连接点是程序结构中明确定义的位置,方面可以在其建议代码中编织。
但是,当谈到真正的例子时,我找不到任何好的例子来理解连接点的例子。
从上面链接中的示例中可以看出,如果 Advice 和 Poincuts 是下面写的,那么我们在哪里定义连接点?
经典方法:
建议:
切入点: