Aspect oriented programming is really a simple concept. What you have is, you have a caller of a method, and the actual method-the logic of the method. And what aspect oriented programming is is about inserting objects in between the caller of the method and the actual method itself so that you can add specific behavior between the caller and the actual method. That's one area of aspect oriented programming. Another part of aspect oriented programming is taking a plain Java class, and forcing it-without changing the code-forcing it to implement a certain interface, like maybe a caching API or a logging API. So those are really the two things of aspect oriented programming. Intercepting, method calls, field calls, constructor calls, and adding interfaces to a plain Java class.