In my previous tutorial I have shown how to write Spring AOP using XML configuration and in this tutorial I am going to show you how to write Annotation based Spring AOP using @AspectJ. This example creates annotation examples with @Aspect, @Pointcut, @Before, @After, @Around, @AfterReturning, @AfterThrowing Advice. @AspectJ is a style to declare aspects in a Java class using annotation. @EnableAspectJAutoProxy annotation is used in Java configuration to enable @AspectJ. To work with spring AOP and @AspectJ support, we need to create a class annotated with @Aspect annotation. Inside @Aspect annotated class we can create our pointcut and using pointcut we can also create our advice. Spring AOP is used for different purposes such as logging, transaction management, handling with exception and validating return value of a method.