【发布时间】:2012-10-05 08:41:21
【问题描述】:
如果能够定义我自己的方法拦截器(建议)并将它们编织到我的客户端 GWT 方法中,并让 GWT 与我的应用程序的其余部分一起自动将它们编译成 JavaScript,那就太好了。
我查看了gwt-ent,但它看起来自 2009 年以来没有得到稳固的发展,并且存在很多问题。我也听说过gwt-tiny-aop,但听说非常有限。
我还有其他选择吗?我知道 AOP 需要动态字节码生成,这反过来又需要大量反射,而且 GWT 不包含很多支持(并且似乎不鼓励)反射的做法,但我想知道是否有任何稳定的、众所周知的用于 GWT 的 AOP 库。至少我可以用来编写类似 AOP 联盟的拦截器:
public class MyInterceptor implements MethodInterceptor {
@Override
public void onIntercept(MethodInvocation mi) {
// Do some stuff...
// Let the method execute
Object results = mi.proceed();
// Analyze results...
// Returns results
return results;
}
【问题讨论】:
-
为什么不使用 javascript(封装在 JSNI 中)来模拟这种行为?
-
可能是dotvoid 之类的东西?不错的主意...绝对是候选人,但如果可能的话,仍然更喜欢 Java 解决方案
-
要将 AOP 与 GWT 一起使用,您必须先对源代码进行处理,然后再将其提供给 GWT,而不是处理字节码。
-
谢谢@ThomasBroyer (+1) - 你能解释一下你所说的“按摩源代码”是什么意思,或者提供一个代码示例吗?再次感谢!
-
我的意思是用拦截器合并到原始方法中创建新源。然后,您可以将这些增强的源代码传递给 GWT 编译器。