What is Aspect Oriented Programming (AOP)?
Aspect oriented programming (AOP) is a horizontal programming paradigm, where same type of behaviour is applied to several classes. In AOP, programmers implement these cross cutting concerns by writing an aspect then applying it conditionally based on a join point. This is referred to as applying advice. There are several examples of aspects like logging, auditing, transactions, security, caching, etc.
When AOP should be used?
Imagine there is class containing several methods and there is a need to perform logging action (common functionality) before the method call, after the method call and when the method returns.
Normally the way one would be adopt is to log before the method call, log after the method call, and log when the method returns for every method in the class like its shown here Non Aspect Oriented. This technique would involve a lot of CODE DUPLICATION. This is where Aspect Oriented Programming comes into play.
Basic terms related with AOP
Aspect: is the functionality that you want to implement. For instance, logging before every method call or after etc. Here Logging is an aspect.
Pointcut: is the expression that determines what method needs to be invoked where the functionality needs to be implemented. For instance, every method inside Addition class should have the functionality implemented would be written as
Advice: When a particular pointcut expression is met, then the code that needs to be executed is called an advice.
JoinPoint: Execution of the method when the condition is met is called JoinPoint.
Weaving: The entire process of getting the method executed when the condition is met is called weaving
Practical Example of AOP
The following link to my github account shows how aspect oriented programming can be implemented with Spring and how it differs from non aspect oriented programming – Aspect Oriented Programming