我有一个切入点,它监听对DBRow和所有子类中的字段的访问
before(DBRow targ) throws DBException: get(@InDB * DBRow+.*) && target(targ) {
targ.load();
}
现在,我需要确定get切入点指定的acesed字段的值。
在AspectJ中这可能吗?
最佳答案
对于set()
切入点,您可以通过args()
绑定值,但对于get()
切入点则不能。因此,为了在没有任何反省技巧的情况下获取价值,只需使用around()
建议而不是before()
。这样,您就可以将字段值作为返回值proceed()
:
Object around(DBRow dbRow) : get(@InDB * DBRow+.*) && target(dbRow) {
Object value = proceed(dbRow);
System.out.println(thisJoinPoint);
System.out.println(" " + dbRow + " -> " + value);
dbRow.load();
return value;
}