== which designator matched which join point == Five methods are called once each: OrderService.place, OrderService.cancel, InventoryService.reserve, InventoryService.finalCheck and DefaultOrderService.interfaceless. orderService proxy kind : CGLIB subclass proxy is an instance of DefaultOrderService : True args (bound: SKU-1/2) -> DefaultOrderService.place(..) bean(*OrderService) -> DefaultOrderService.place(..), DefaultOrderService.cancel(..), DefaultOrderService.interfaceless(..) @within(Audited) -> DefaultOrderService.place(..) execution (full signature) -> DefaultOrderService.place(..) @annotation(Marker) -> DefaultOrderService.place(..) target(DefaultOrderService) -> DefaultOrderService.place(..), DefaultOrderService.cancel(..), DefaultOrderService.interfaceless(..) this(OrderService) -> DefaultOrderService.place(..), DefaultOrderService.cancel(..), DefaultOrderService.interfaceless(..) execution (wildcards) -> DefaultOrderService.cancel(..) @target(Audited) -> DefaultOrderService.cancel(..) bean(inventoryService) -> InventoryService.reserve(..) within -> InventoryService.reserve(..) @args(Trackable) -> DefaultOrderService.interfaceless(..) == what the parser accepts and refuses == supported (all parsed and evaluated): execution(* com.ankurm.aop.service.OrderService.place(..)) OK within(com.ankurm.aop.service..*) OK this(com.ankurm.aop.service.OrderService) OK target(com.ankurm.aop.service.DefaultOrderService) OK args(String, int) OK @target(com.ankurm.aop.service.Audited) OK @args(com.ankurm.aop.service.Trackable) OK @within(com.ankurm.aop.service.Audited) OK @annotation(com.ankurm.aop.service.Marker) OK bean(defaultOrderService) OK unsupported in Spring AOP: call(* com.ankurm.aop.service.OrderService.place(. rejected get(* com.ankurm.aop.service.*.*) rejected set(* com.ankurm.aop.service.*.*) rejected initialization(com.ankurm.aop.service.*.new(..)) rejected staticinitialization(com.ankurm.aop.service.*) rejected preinitialization(com.ankurm.aop.service.*.new(..) rejected handler(java.lang.Exception) rejected adviceexecution() rejected withincode(* com.ankurm.aop.service.*.*(..)) rejected cflow(execution(* com.ankurm.aop.service.*.*(..))) rejected cflowbelow(execution(* com.ankurm.aop.service.*.*( rejected if() rejected @this(com.ankurm.aop.service.Audited) rejected @withincode(com.ankurm.aop.service.Marker) rejected the exception, in full: org.aspectj.weaver.tools.UnsupportedPointcutPrimitiveException Pointcut expression 'call(* com.ankurm.aop.service.OrderService.place(..))' contains unsupported pointcut primitive 'call' The reference documentation says these produce an IllegalArgumentException. They do not: UnsupportedPointcutPrimitiveException extends RuntimeException directly, so a catch of IllegalArgumentException will not catch it.