我有一个切入点,用于侦听对DBRow和所有子类
中的字段的访问before(DBRow targ) throws DBException: get(@InDB * DBRow+.*) && target(targ) {
targ.load();
}
我现在需要确定由get pointcut指定的accesed字段的值。 这在AspectJ中是否可行?
答案 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;
}