我正在寻找一个围绕 Mule 流的方面,即我想定义一个@Around
当有东西进入 Mule 流时将被触发的方面,以便我可以执行自己的统计数据收集。我还没有找到一个简单的“Flow”类来包装,但我已经看到这MessageReceiver
是一个很好的类,或者至少是这个类的实现。
但是我不是 AspectJ 方面的专家,我无法让它发挥作用。我的@Aspect
班级有一个看起来像这样的方法。
@Around("execution(public * org.mule.api.transport.MessageReceiver+.*(..))")
public Object addMonitor(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("Before");
Object object = pjp.proceed();
System.out.println("After");
return object;
}
但是当调用方法时,我无法打印出之前/之后的字符串HttpMessageReceiver
。我已经在我的流程中设置了一个调试点,并且可以看到它org.mule.transport.AbstractMessageReceiver.routeMessage(MuleMessage message)
正在被调用,这是一个实现,MessageReceiver
但我从未看到对我的 Aspect 的调用。
有可能在 Mule 中执行这种 Aspect 吗?
//编辑:如前所述,我是 AspectJ 和 AOP 的新手,所以我会说我在 Mule 中使用 spring 来处理我的@Aspect
课程。我有使用 Spring 处理的 bean 的示例,但不适用于不受 Spring 管理的常规 POJO。我的 Spring 配置如下所示:
<spring:beans>
<context:component-scan base-package="com.example" />
<context:annotation-config />
<aop:aspectj-autoproxy />
</spring:beans>