获取get pointcut中访问字段的值

时间:2015-01-12 16:38:59

标签: java aspectj pointcut

我有一个切入点,用于侦听对DBRow和所有子类

中的字段的访问
before(DBRow targ) throws DBException: get(@InDB * DBRow+.*) && target(targ) {
    targ.load();
}

我现在需要确定由get pointcut指定的accesed字段的值。 这在AspectJ中是否可行?

1 个答案:

答案 0 :(得分:2)

对于set()切入点,您可以通过args()绑定值,但不能绑定get()切入点。因此,为了在没有任何hacky反射技巧的情况下获得价值,只需使用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;
}