AOP- Understanding terms

In last few posts on AOP I have mentioned basics of AOP, and some sample implementations-

I will discuss some formal AOP terms here

JoinPoint: A well defined point in execution of a application. A point where something is happening in the applicaiton. For example when a method is called, an object is instantiation, an exception is being thrown etc.

Advice: The code that is to be executed at a particular joinpoint.

Pointcut: Collection of joinpoints where advice has to be applied.

A very good explanation of joinpoint & pointcut-

Aspect: Combination of pointcuts and advice, programmed in a class. For example see loginaspect class

Weaving: When do we add aspects to actual code- compile time, run time (Spring), load time (AspectJ)

Target Object: object whose execution flow is modified by an AOP process.

Introduction: Process by which you modify target object, by declaring additional methods or fields.

Types of advice:

Before: Before starting the execution

After: After completion of execution

After Throwing: After an exception is thrown

After Returning: After normal execution (no exception thrown)

Around: Before and After execution