gpt4 book ai didi

java - 如何在 Guice 中定义 AOP 切入点

转载 作者:行者123 更新时间:2023-12-04 06:01:11 25 4
gpt4 key购买 nike

我正在使用 Guice 拦截带有特定注释的方法:

@GuiceWillInterceptThis
public void doSomething() {
// ...
}

事实证明,这个项目中的大多数方法都用 @GuiceWillInterceptThis 注释。并且为了让 Guice 知道拦截它们而使用相同的注释继续标记方法后的方法变得很烦人。如果我能以某种方式定义拦截方法的“模式”,那就太好了。

例如,最好说“只拦截在包 Z 内的类 Y 内返回类型 X 的方法”。

我以前用 Spring & AOP Alliance 做过这个,我在 XML 中定义了“切入点”(我认为这是正确的 AOP 术语!),Spring 引导 AOP Alliance 将正确的建议绑定(bind)到这些定义的切入点内的所有连接点,就像这样:
execution(public * *(..))

我想做同样的事情(因为 Guice 也使用 AOP Alliance)但不使用 Spring,也不使用 XML 来定义切入点。

我已经下载了 AOP Alliance 发行版,但似乎无法弄清楚如何以编程方式(在 Java 中)定义切入点。另外,我不知道在哪里添加这样的代码(也许是 Guice 模块?)

我有一种感觉,我可能需要将 AspectJ 用于这样的事情,但我对此的经验为零,并且不想沿着这条路走下去,除非 SO 上的一些博学的人告诉我这是我唯一的选择。 (顺便说一句,如果是的话,也许一个善良的灵魂可以提供一个超快速的代码片段来展示如何在 AspectJ 中实现这一点?!?!)

提前感谢您在正确方向上的任何插入!

最佳答案

你必须执行 com.google.inject.matcher.Matcher 类和方法匹配的接口(interface),并在 bindInterceptor 中使用在模块配置中。

关于java - 如何在 Guice 中定义 AOP 切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com