在 Aspect 中获取目标对象并在目标对象上调用另一个方法

Get target Object in Aspect and call another method on target object

我想在一个方法切入点上写一个方面,在这个方面我想使用调用切入点方法的对象调用另一个方法。

像这样:


@Pointcut("@annotation(com.mypackage.Notify(getC))")
public void notifyPointCut() {
}

@AfterReturning(value = "notifyPointCut(getC)", argNames = "joinPoint") 
public void notifyChange (JoinPoint joinPoint) {
  Object targetObject  = joinPoint.getTarget();
  C cField = targetObject.invokeMethod("getC");
  notifier.sendUpdate(cField);
}

我想获取调用 joinPoint 方法的对象并对该对象进行另一个方法调用(在注释中传递的方法名称)

我的用例是获取对象的一些字段,这些字段是通过joinPoint 方法创建或更新的。一旦 joinPoint 方法 returns,我想获取方面中的那些字段并发送有关字段值的通知。

我不确定我是否使方面的用法过于复杂,因为我在搜索时找不到任何地方这样的用法。

我想出了如何调用该方法。我需要获取方法并调用它,然后我不需要为 class.

进行转换

Object targetObject  = joinPoint.getTarget();
Method m = targetObject.getMethod("getC");
m.invoke(targetObject);