我有以下方法:
@OnEvent
public void onEvent(Event event) {
}
现在,我很困惑AspectJ是否可以拦截方法“声明”,即它的调用和执行,以便在其他地方提供功能。 目标是“获取”该方法并将其作为事件处理程序注册到OSGi服务注册表中:
public void start(BundleContext bc) {
bc.registerService(EventHandler.class, new EventHandler() {
@Override
public void handleEvent(Event event) {
// TODO get a "reference" of the onEvent(...) method and call it here
onEventJoinPoint.proceed(event);
}
}, null);
}
答案 0 :(得分:0)
不,这在概念上不可能在AspectJ中,也可能在任何其他AOP框架中。但是你有几种选择:
还有其他类似的选择。但在每种情况下,请注意
proceed()
。如果您有简单评论过于复杂的后续问题,请更新主要问题并通知我。我现在不能再具体了,因为我对你的用例知之甚少。因此,我还没有提供任何示例代码。