如何在Guice中定义AOP切入点

时间:2012-01-16 02:57:55

标签: java aop guice aspectj

我使用Guice在标记特定注释时拦截方法:

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

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

例如,可以说“拦截仅在pakcage Z 中的类Y中返回类型X的方法”。

我之前用Spring& amp; AOP联盟,我在XML和Spring引导的AOP联盟中定义了“切入点”(我认为这是正确的AOP术语!),以便将正确的建议绑定到这些定义的切入点中的所有连接点,如下所示:

execution(public * *(..))

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

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

我有一种感觉我可能需要使用AspectJ这样的事情,但我没有经验,并且不想走这条路,除非一些有学问的人告诉我这是我唯一的选择。 (顺便说一句,顺便说一句,如果是这样,也许一个善良的灵魂可以提供一个超快速的代码片段来展示如何在AspectJ中实现这个目标?!?!)

提前感谢任何朝着正确方向的推动!

1 个答案:

答案 0 :(得分:3)

您必须为类和方法匹配实现com.google.inject.matcher.Matcher接口,并在模块配置中的bindInterceptor中使用它。