The annotations introduced in Java 5 allow us to add features in a very simple way.
In our context, they allow us to define aspects and other AOP components already seen in this book, by means of annotations.
The power of this functionality lies in allowing the definition of aspect, pointcut, and advice directly on Java classes with features provided by AspectJ. One doesn't have to put up with inconveniences such as the alteration of bytecode required by a solution based only on AspectJ.
To put the AOP components together, a proxy is created (autoproxy) on the beans on which annotations have been defined.
In SpringAOP, an aspect can't be a target of another aspect.