Spring AOP Introduction to Aspect Oriented Programming

In this Spring AOP Tutorial we are talking about the Aspect Oriented Programming in Short "AOP", Aspect Oriented Programming is a feature Spring provide in the Dependency Injection, Actually Aspect Oriented Programming  is not only feature but also its different style of programming just like as Object Oriented Programming.

Popular Tutorials

Introduction to Spring AOP

Now I am talking about some other programming before Aspect Oriented Programming...

1. Functional Programming: In older programming language like C, we have used functional programming style like below in figure.
Spring AOP Tutorial


As above see In this style of programming writing code into couple of functions and each function perform unit task and each function call another function as see above and after last function execution then program is completed. But in this style of programming the main problem is complexity, it is very messy style of coding to write big project programming.
2. Object Oriented Programming: In this style of programming we would not think about function when we trying to solve problem by writing code, we would think as individual entities as object when writing the program as below Object A, Object B & Object C...

Aspect Oriented Programming with Spring
Here each object contain member variables and methods to perform individual tasks of each individual entity so this is fine but here is also a problem that not all rectify common procedure in all of the objects as common logging procedure in all as logMessage() method in all.

AOP with Spring
In above see that logMessage() method in each objects no matter how many objects are there so this is not good design of programming each object has repeating method. So to solve this type problem we write the separate entity for logger and called in each objects where we want to add read log message as below.
Aspect Oriented Programming
 For using this logger entity in each object we have to make dependency injection with each beans of business classes or we have use inheritance for accessing logger method of Logger class that is good but couple of problems are also there.

First Problem is doing the design this type of style there too many dependencies with non business object because  logger object does not have any business logic in the project its using just for logging with each objects in the project.

PROBLEMS:
CROSS CUTTING CONCERNS: Means non business idea or non business logic its not part of our main problem it is related to below...
To solve the above problems in the Object Oriented Programming we can using Aspect Oriented Programming.

3. Aspects Oriented Programming: In this style of code we are make Aspects means Aspects are also specific classes which some special methods for particular tasks like logging, security and transactions etc.

Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns such as transaction management that cut across multiple types and objects. (Such concerns are often termed crosscutting concerns in AOP literature.)

Aspect-oriented programming entails breaking down program logic into distinct parts (so-called concerns, cohesive areas of functionality). All programming paradigms support some level of grouping and encapsulation of concerns into separate, independent entities by providing abstractions (e.g., procedures, modules, classes, methods) that can be used for implementing, abstracting, and composing these concerns. But some concerns defy these forms of implementation, and are called crosscutting concerns because they "cut across" multiple abstractions in a program.

First we make different Aspects...
 a. Logging Aspect
 b. Transaction Aspect
 c. Security Aspect
 etc... and configure with each of objects as per as our requirement with Aspect Configuration file as see below in figure...
AOP
Aspect Configuration file: Its responsible for configuration for all Aspects with the all object where we want to use. Its configure suppose Logging Aspect for a method in Object A Before or After execution of that method,
 its just like the.....
      -Servlet Filter in Servlet Configuration
      -Trigger in Database
      -Interceptors in Struts or in Spring MVC.

Aspect Configuration tells which aspect apply which method of which class. Aspect Configuration solve our three problems of Object Oriented Programming
  • To many relationships with the crosscutting objects- Only single configuration required for every object where we want to use the crosscutting object like Logging Aspect with using Aspect Configuration file
  • Code is still required in the all methods- No need to code required in all method just put that method on the Aspect Configuration file then code automatically associated with that method and execute Before or After execution of Target Method.
  • Cannot all be changed at once- We can all be changed at once by using Aspect Configuration file. 
aspect

There are only two Steps for using Aspects:
  1. Write Aspects
  2. Configure Aspects where the aspects apply

AOP Terminologies:

Types of advice:


Spring AOP Related Posts
  1. Spring AOP Interview Questions and Answers
  2. @Aspect Annotation in Spring
  3. Advices in Spring AOP
  4. Spring AOP JoinPoints and Advice Arguments
  5. Spring AOP-Declaring pointcut Expressions with Examples
  6. Spring AOP XML configuration
  7. Spring AOP XML Schema based Example
  8. Spring AOP AspectJ @Before Annotation Advice Example
  9. Spring AOP Before Advice Example using XML Config
  10. Spring AOP AspectJ @After Annotation Advice Example
  11. Spring AOP After Advice Example using XML Config
  12. Spring AOP AspectJ @AfterReturning Annotation Advice Example
  13. Spring AOP After-Returning Advice Example using XML Config
  14. Spring AOP AspectJ @AfterThrowing Annotation Advice Example
  15. Spring AOP After Throwing Advice Example using XML Config
  16. Spring AOP AspectJ @Around Annotation Advice Example
  17. Spring AOP Around Advice Example using XML Config
  18. Spring AOP Writing First AspectJ Program in Spring
  19. Spring AOP Proxies in Spring
  20. Spring AOP Transaction Management in Hibernate
  21. Spring Transaction Management
  22. Spring Declarative Transaction Management Example
  23. Spring AOP-Ordering of Aspects with Example


<< Event Handling in Spring |index| Setting up AOP in Spring>>


Labels: ,