问题标签 [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.

0 投票
1 回答
822 浏览

spring - 为什么用@target 定义的切入点不起作用?

我正在尝试使用 Spring 方面在使用MongoRepository. 目标是这个接口:

当我使用这个切入点时:

此方法在open调用方法之前运行正常:

但我希望它只在带有注释的接口上运行,@InSearch所以我尝试以这种方式定义切入点:

注释定义:

使用此切入点,beforeSavingEntity不会调用该方法。我在日志上没有任何错误。我不确定我是否理解了@target关于@within. 我也试过了@within,也没有用。

我必须如何定义这个切入点以在实现扩展并用注释save的接口的类中选择方法执行?MongoRepository@InSearch

谢谢!

0 投票
3 回答
4332 浏览

java - 使用自定义注解创建我们自己的切面

我是 Annotations 的新手,也是 StackOverflow 的新手,这是我的第一个问题。我正在尝试编写自定义注释,这将帮助我跟踪和记录方法执行。

例如:

在这里,每当methodA()执行该方法时,我想记录到一个文件,告诉“我们正在 A 类中输入方法 A”,当方法 A 结束时“我们正在 A 类中退出方法 A”类似这样的内容。我们 vil 有许多类和方法。

我知道这可以使用 AspectJ 来完成。我通过定义切入点和连接点来做到这一点。但我想使用自定义注释来做到这一点。

如果有人可以指导我如何去做这将非常有帮助。

提前致谢。

0 投票
1 回答
446 浏览

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 上有一个类似的问题,但没有人能够提出一个有效的答案。

0 投票
1 回答
42 浏览

c# - 我可以使用方面自动实现 INotifyPropertyChanged

有没有办法使用 PostSharp 来更改这种代码:

变成类似的东西:

?

0 投票
1 回答
59 浏览

java - 切入点可以是动态线程特定的吗?

我想在特定条件下跟踪我所有的公共方法调用。但我希望这种跟踪尽可能少地损害整个系统的性能。

我需要一种方法来动态地“打开”一个切入点,以便仅为指定的线程执行,并且这种打开(和关闭)必须可以从我的代码中动态调用。

即,如果我的Java 代码发现某件事发生了,它会为它自己的线程打开一个切入点。这个切入点将记录所有公共方法调用,并且在一段时间(或一定数量的拦截)之后,切入点会自行关闭。

当然,我可以在建议中调用代码,例如“...getCurrentThread().equals(myMonitoringThread) && monitoringEnabled”,但这意味着建议将针对所有线程的所有公共方法运行,并始终执行此代码肯定会损害整个应用程序的性能。

我想要的是仅在启用的时间内为所选线程隔离性能,并使其余线程不受影响。

有人知道如何做到这一点的技术吗?

谢谢托马斯

0 投票
1 回答
455 浏览

javascript - 使用 aspect.around,但检查相互调用的方法

我想为 Dojo 商店运行一些特定put()的代码。add()我遇到的问题是,对于 JSON REST 存储,在 JsonRest.jsadd()中只是一个调用的函数put()

因此,如果我使用aspect.around()with add()如果我将代码应用到使用实现add()put().

请注意,我知道大多数商店都会这样做。我只想保证我的解决方案适用于任何商店,无论是否有方法嵌套。

Dojo自己的Observable.js也有同样的问题。他们是这样处理的:

我的问题是:是否有一种简单的“短”方法来更改我现有的代码,以便它检查它是否在一个方法内,并避免运行代码两次?

我试了一下,但我最终得到了叮当、笨拙的代码。我确定我错过了一些东西......

这是我现有的代码:

0 投票
1 回答
150 浏览

java - 是否有使用方面和注释的数据绑定器?

我想使用swing、spring和hibernate编写一个java应用程序。

我想使用数据绑定器用 bean 的值填充 gui,并且我还希望它反映 gui 中 bean 的更新。

似乎有一种方法可以在春天使用DataBinder,但据我了解,您需要自己在bean中实现属性更改代码,并且您需要将bean的属性连接到setter方法gui 使用我不喜欢的字符串。

我遇到这个是为了防止在 bean 中手动实现属性更改支持:

https://github.com/damnhandy/Handy-Aspects

现在我正在寻找一个可以与它一起使用的数据绑定框架,它还支持注释以最小化和简化活页夹的配置。

我希望我可以使用带有属性名称的注释来注释 gui 的设置器 - 或者,更好的是,如果它与属性具有相同的名称,它会自动连接。

例如,如果我有一个带有属性名称和年龄的 Person 类,我想像这样配置 gui:

有这样的吗?

0 投票
2 回答
727 浏览

java - 为什么这个 Spring Aspect 没有像使用方法参数那样打印?

让我先提一下,我面临的问题是方法,从第一个代码块开始,而不是打印
interceptThoughts(String thoughts)

我正在运行Spring in Action的教程。有一个Magicianimplements MindReader与方法interceptThoughts(String thoughts)和接口getThoughts()

该方面应该通过方法读取该Volunteer接口implements Thinker的思想thinkOfSomething(String thoughts)

我有我的javaBeanConfigMagicianVolunteer

我正在尝试运行它以获取在Magician方法中打印行的interceptThoughts方法


  • 没有错误
  • 没有例外
  • 包装@Pointcut(execution(Magician方面是正确的
  • 我的 Spring 配置 xml 中有这两项

    /li>

问题是@Before从这Magician方面来说没有按应有的方式打印。我在这里错过了什么吗?为什么不打印?我还有其他方面的方法,它们不带参数并且运行得很好。我没有正确传递参数值吗?

0 投票
1 回答
991 浏览

java - Spring:添加事务特定资源

我正在尝试找到一种向现有事务添加/获取资源/状态的方法。这在春天可能吗?

我想要实现的类似于下面的伪代码:

我发现了类似的东西

但是,这会将资源添加到事务的当前线程。有没有办法使资源事务仅受限制?

在我的实际代码中,我使用 spring jdbc 的 DataSourceTransactionManager 作为事务管理器。

在此先感谢您的帮助:)

0 投票
1 回答
860 浏览

aop - 面向切面编程中的连接点

我目前正在研究 AOP 及其重要部分,即Advice、PointcutsJoin Points。我从这个链接中 阅读了关于什么是建议切入点的非常易于理解的解释。面向方面编程与面向对象编程

但是,我很难理解什么是加入点。根据我的阅读,连接点是程序结构中明确定义的位置,方面可以在其建议代码中编织。

但是,当谈到真正的例子时,我找不到任何好的例子来理解连接点的例子。

从上面链接中的示例中可以看出,如果 Advice 和 Poincuts 是下面写的,那么我们在哪里定义连接点?

经典方法:

建议:

切入点: