在 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);
我想在一个方法切入点上写一个方面,在这个方面我想使用调用切入点方法的对象调用另一个方法。
像这样:
@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);