Summary of what you need to know. Make sure you can use each of the following mechanisms. Different kinds of advice: around before, after, and after returning. around needs to return a value (even if it's void). after returning let's you capture the return value of a call. Pointcuts you need to know: Signature based pointcuts: call, execution, get, set. understand the difference between execution and call Wildcards: *, .., + Property-based pointcuts: this and target objects, relationship to static args withincode, within, cflow, cflowbelow if &&, ||, !, short circuiting pointcut declarations pointcut allcalls(int n) : call(.. *.*(int)) && args(n) Advice precedence rules Inter-type declarations, meaning of "private" within aspect declare parents