SlideShare a Scribd company logo
Introduction to Aspect
Oriented Programming
By: Amir Kost
Agenda
•What is Aspect Oriented Programming?
•Usage
•A short dive to AspectJ
•Demos
What is Aspect Oriented
Programming (AOP) ?
From Wikipedia: ”A programming paradigm
that aims to increase modularity by allowing
the separation of cross-cutting concerns. It
does so by adding additional behavior to
existing code (an advice) without modifying the
code itself”
Usages of AOP
AOP can be used for a multitude of purposes,
but the most common are:
• Security.
• Transactions.
• Logging.
How does AOP work?
AOP works by intercepting methods that
comply to certain parameters (pointcuts), and
executing a callback wrapper (advice).
AOP – Basic Terminology
• Joinpoint - a point of execution.
• Pointcut – a set of joinpoints.
• Advice - Advice brings together a pointcut (to
pick out joinpoints) and a body of code.
AOP – Types of Advice
There are five major types of advice:
• Before
• AfterReturn
• AfterRunning
• AfterThrowing
• Around
AOP Libraries - AspectJ
•Allows interception of all classes and
methods, including 3rd party jars.
•Requires weaving during compile time or load
time.
AOP Libraries – Spring AOP
•Has Spring capabilities (IoC).
•Allows interception of Spring beans only.
•Is proxy based.
•Has limited capabilities – no private methods.
•Intercepts only methods called from one class
to another.
What About Perfomance?
Perfomance Impact - AspectJ
•Since AspectJ modifies the bytecode itself
through weaving, there is negligible overhead
on performance.
Perfomance Impact – Spring AOP
•Adds a constant delay of a few microseconds
for each pointcut.
•Perfomance might be affected if:
• Advices are lengthy.
• There are several aspects for a single
pointcut.
•See the following blog post.
Example 1 – Before Aspect
@Before("call(* org.aspectprogrammer.*.*(..))")
public void callFromFoo(JoinPoint joinPoint) {
System.out.println("Call from : " + joinPoint.getSignature
().getName());
}
Example 1 – Pointcut Analysis
@Before("call(* org.aspectprogrammer.*.*(..))")
Return
Type
Package
Advice
Type
Class
Name
Method
Name
Method
Params
AspectJ
Keyword
Example 2 – Around Aspect
@Around("call(* org.aspectprogrammer..*(..))")
public Object performance(ProceedingJoinPoint thisJoinPoint)
{
// do some business logic
Object res = thisJoinPoint.proceed();
// do some more business logic
return res;
}
A Short Dive into AspectJ
AsepctJ comes in 2 flavors:
1. Annotations (like the ones mentioned
above).
2. An extentsion of Java, with additional
keywords like pointcut and aspect.
AspectJ – Under the hood
•AsepctJ uses a process called weaving to
identify joinpoints and apply the advices.
•It analyzes and manipulates the bytecode by
using ASM and BCEL libraries.
AspectJ Weaving Types
•Load Time Weaving.
•Compile Time Weaving.
•Post Compilation Weaving.
Using AspectJ
AspectJ can be used in the following ways:
1. Command line launcher.
2. Maven plugin.
3. Via javaagent.
Using AspectJ – Command Line
1. ajc for compile or post compile weaving.
Examples:
•ajc HelloWorld.java Trace.java
•ajc -inpath app.jar -aspectpath
tracelib.jar -outjar
tracedapp.jar
Using AspectJ – Command Line –
Load Time Weaving
2. aj for load time weaving:
•Compile your java code.
•Compile your aspects using ajc.
•Run your application with aj:
aj com.mycompany.Myclass
Using AspectJ – Load Time
Weaving - Using javaagent
Compile your classes and aspects, and add
the following option to the JVM:
javaagent:<path_to>/aspectjweaver.jar
Using AspectJ – Load Time Weaving –
configuration
In order to configure to which classes and aspects to
weave, write an aop.xml file:
<aspectj>
<aspects>
<aspect name="com.aspects.MyAspect"/>
</aspects>
<weaver options="-showWeaveInfo">
<include within="com.app.MyController"/>
<include within="org.3rdparty.beans..*"/>
</weaver>
</aspectj>
Using AspectJ - Maven
• Import AOP libraries to your pom file:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
</dependency>
Using AspectJ – Maven – AspectJ Plugin
Add AspectJ weaving plugin to your pom:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
Using AspectJ – Maven – AspectJ Plugin –
Cont’d
Note: This plugin is used both for compiling aspects
and weaving aspects in CTW.
Defining Pointcuts using AspectJ
AspectJ defines a broad set of keywords for
defining pointcuts. Among them:
• call, execute – when calling/executing a
method.
• get/set – when accessing a field in a class.
• this – the currently executing joinpoint is
instance of this.
AspectJ – Inter Type Declaration
Besides running advices, AspectJ can do the
following:
1. Inject a field to a class.
2. Inject a method to a class.
3. Inject a constructor to a class.
4. Inject an interface to a class.
Other AOP Libraries – Guice AOP
• AOP library for Guice framework.
• Does not use ApsectJ annotations.
• Works with Matchers.
Other AOP Libraries – Javassist
• Bytecode injection library.
• Injects code as strings.
Why did we need AOP in eBay?
• In one of our RESTful web services, we
needed to add a certain request param to
each error message in the log.
• The classes writing the error messages are
not aware of that param.
• We did not want to change all calls to logger
api in our modules, or be concerned with
future calls.
Demo 1 – Spring Demo
https://github.com/amirko/spring-app-aop-
example
Demo 2 – AspectJ LTW
https://github.com/amirko/aop-webapp-ltw.git
Demo 3 – AspectJ CTW
https://github.com/amirko/aop-webapp-ctw.git
Aspects Library for Demos 2 + 3
https://github.com/amirko/aspects.git
Questions?
https://www.linkedin.com/pub/amir-kost/0/450/11
https://github.com/amirko

More Related Content

What's hot (20)

PPTX
Spring Security 5
Jesus Perez Franco
 
PDF
Javascript Design Patterns
Subramanyan Murali
 
PDF
Java Collection Interview Questions [Updated]
SoniaMathias2
 
PDF
Lille2010markp
Ch'ti JUG
 
PDF
Spring framework aop
Taemon Piya-Lumyong
 
PDF
Understanding the Android System Server
Opersys inc.
 
PDF
Java Course 11: Design Patterns
Anton Keks
 
PDF
Spring 2.0 技術手冊第四章 - Spring AOP
Justin Lin
 
PDF
Reactive Card Magic: Understanding Spring WebFlux and Project Reactor
VMware Tanzu
 
PDF
Introduction to Java 11
Knoldus Inc.
 
PPTX
Functional programming with Java 8
LivePerson
 
PPTX
Essentials of Multithreaded System Programming in C++
Shuo Chen
 
PDF
Spring Framework - AOP
Dzmitry Naskou
 
PPTX
Alfresco devcon 2019: How to track user activities without using the audit fu...
konok
 
PPTX
Spring batch introduction
Alex Fernandez
 
PPT
Java Collections Framework
Sony India Software Center
 
PPTX
Object oriented programming
Amit Soni (CTFL)
 
PPTX
Master page in Asp.net
RupinderjitKaur9
 
PPTX
Event Handling in Java
Ayesha Kanwal
 
Spring Security 5
Jesus Perez Franco
 
Javascript Design Patterns
Subramanyan Murali
 
Java Collection Interview Questions [Updated]
SoniaMathias2
 
Lille2010markp
Ch'ti JUG
 
Spring framework aop
Taemon Piya-Lumyong
 
Understanding the Android System Server
Opersys inc.
 
Java Course 11: Design Patterns
Anton Keks
 
Spring 2.0 技術手冊第四章 - Spring AOP
Justin Lin
 
Reactive Card Magic: Understanding Spring WebFlux and Project Reactor
VMware Tanzu
 
Introduction to Java 11
Knoldus Inc.
 
Functional programming with Java 8
LivePerson
 
Essentials of Multithreaded System Programming in C++
Shuo Chen
 
Spring Framework - AOP
Dzmitry Naskou
 
Alfresco devcon 2019: How to track user activities without using the audit fu...
konok
 
Spring batch introduction
Alex Fernandez
 
Java Collections Framework
Sony India Software Center
 
Object oriented programming
Amit Soni (CTFL)
 
Master page in Asp.net
RupinderjitKaur9
 
Event Handling in Java
Ayesha Kanwal
 

Viewers also liked (20)

PDF
AOP
Joshua Yoon
 
PPTX
Introduction to Aspect Oriented Programming
Yan Cui
 
PPT
Aspect Oriented Programming
Anumod Kumar
 
PDF
Aspect Oriented Programming and Design
Manikanda kumar
 
PDF
Aspect oriented programming_with_spring
Guo Albert
 
PPTX
Introduction To Aspect Oriented Programming
saeed shargi ghazani
 
PPTX
Aspect Oriented Programming
Rodger Oates
 
PPTX
Introduction to Aspect Oriented Programming (DDD South West 4.0)
Yan Cui
 
PDF
Aspect-Oriented Programming (AOP) in .NET
Yuriy Guts
 
PPTX
Orchestration tool roundup - OpenStack Israel summit - kubernetes vs. docker...
Uri Cohen
 
PPTX
Scala does the Catwalk
Ariel Kogan
 
PPTX
JavaScript TDD
Uri Lavi
 
PDF
Elasticsearch na prática
Breno Oliveira
 
DOCX
HagayOnn_EnglishCV_ 2016
Hagay Onn (the Spot)
 
PDF
What's the Magic in LinkedIn?
Efrat Fenigson
 
PPTX
Not your dad's h base new
Yaniv Rodenski
 
PDF
Scrum. software engineering seminar
Alexandr Gavrishev
 
PPTX
Spring AOP Introduction
b0ris_1
 
PDF
Introduction to AOP, AspectJ, and Explicit Join Points
Kevin Hoffman
 
PDF
Storm at Forter
Re'em Bensimhon
 
Introduction to Aspect Oriented Programming
Yan Cui
 
Aspect Oriented Programming
Anumod Kumar
 
Aspect Oriented Programming and Design
Manikanda kumar
 
Aspect oriented programming_with_spring
Guo Albert
 
Introduction To Aspect Oriented Programming
saeed shargi ghazani
 
Aspect Oriented Programming
Rodger Oates
 
Introduction to Aspect Oriented Programming (DDD South West 4.0)
Yan Cui
 
Aspect-Oriented Programming (AOP) in .NET
Yuriy Guts
 
Orchestration tool roundup - OpenStack Israel summit - kubernetes vs. docker...
Uri Cohen
 
Scala does the Catwalk
Ariel Kogan
 
JavaScript TDD
Uri Lavi
 
Elasticsearch na prática
Breno Oliveira
 
HagayOnn_EnglishCV_ 2016
Hagay Onn (the Spot)
 
What's the Magic in LinkedIn?
Efrat Fenigson
 
Not your dad's h base new
Yaniv Rodenski
 
Scrum. software engineering seminar
Alexandr Gavrishev
 
Spring AOP Introduction
b0ris_1
 
Introduction to AOP, AspectJ, and Explicit Join Points
Kevin Hoffman
 
Storm at Forter
Re'em Bensimhon
 
Ad

Similar to Introduction to Aspect Oriented Programming (20)

PPTX
Aspect j introduction for non-programmers
Tamas Rev
 
PPTX
Aspect Oriented Programming
Fernando Almeida
 
PDF
Spring AOP
SHAKIL AKHTAR
 
PPTX
AOP on Android
Tibor Srámek
 
PPTX
Spring aop
sanskriti agarwal
 
PPTX
Summary of Aspect Oriented Programming
Michael Jo
 
PPT
Aspect Oriented Software Development
Jignesh Patel
 
PPT
Spring AOP
Lhouceine OUHAMZA
 
PPTX
Session 45 - Spring - Part 3 - AOP
PawanMM
 
PPSX
Spring - Part 3 - AOP
Hitesh-Java
 
PDF
Aspect-oriented programming with AspectJ (as part of the the PTT lecture)
Ralf Laemmel
 
PPTX
spring aop
Kalyani Patil
 
PPTX
Playing with Java Classes and Bytecode
Yoav Avrahami
 
PDF
Practical Example of AOP with AspectJ
Yegor Bugayenko
 
PDF
Spring aop
Hamid Ghorbani
 
PPTX
Spring aop concepts
RushiBShah
 
PPT
Spring aop
UMA MAHESWARI
 
PDF
AOP (Aspect-Oriented Programming) spring boot
PLAYAFIFI
 
PPTX
UML for Aspect Oriented Design
Edison Lascano
 
PPT
Aop2007
Tuhin_Das
 
Aspect j introduction for non-programmers
Tamas Rev
 
Aspect Oriented Programming
Fernando Almeida
 
Spring AOP
SHAKIL AKHTAR
 
AOP on Android
Tibor Srámek
 
Spring aop
sanskriti agarwal
 
Summary of Aspect Oriented Programming
Michael Jo
 
Aspect Oriented Software Development
Jignesh Patel
 
Spring AOP
Lhouceine OUHAMZA
 
Session 45 - Spring - Part 3 - AOP
PawanMM
 
Spring - Part 3 - AOP
Hitesh-Java
 
Aspect-oriented programming with AspectJ (as part of the the PTT lecture)
Ralf Laemmel
 
spring aop
Kalyani Patil
 
Playing with Java Classes and Bytecode
Yoav Avrahami
 
Practical Example of AOP with AspectJ
Yegor Bugayenko
 
Spring aop
Hamid Ghorbani
 
Spring aop concepts
RushiBShah
 
Spring aop
UMA MAHESWARI
 
AOP (Aspect-Oriented Programming) spring boot
PLAYAFIFI
 
UML for Aspect Oriented Design
Edison Lascano
 
Aop2007
Tuhin_Das
 
Ad

Recently uploaded (20)

PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 

Introduction to Aspect Oriented Programming

  • 1. Introduction to Aspect Oriented Programming By: Amir Kost
  • 2. Agenda •What is Aspect Oriented Programming? •Usage •A short dive to AspectJ •Demos
  • 3. What is Aspect Oriented Programming (AOP) ? From Wikipedia: ”A programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behavior to existing code (an advice) without modifying the code itself”
  • 4. Usages of AOP AOP can be used for a multitude of purposes, but the most common are: • Security. • Transactions. • Logging.
  • 5. How does AOP work? AOP works by intercepting methods that comply to certain parameters (pointcuts), and executing a callback wrapper (advice).
  • 6. AOP – Basic Terminology • Joinpoint - a point of execution. • Pointcut – a set of joinpoints. • Advice - Advice brings together a pointcut (to pick out joinpoints) and a body of code.
  • 7. AOP – Types of Advice There are five major types of advice: • Before • AfterReturn • AfterRunning • AfterThrowing • Around
  • 8. AOP Libraries - AspectJ •Allows interception of all classes and methods, including 3rd party jars. •Requires weaving during compile time or load time.
  • 9. AOP Libraries – Spring AOP •Has Spring capabilities (IoC). •Allows interception of Spring beans only. •Is proxy based. •Has limited capabilities – no private methods. •Intercepts only methods called from one class to another.
  • 11. Perfomance Impact - AspectJ •Since AspectJ modifies the bytecode itself through weaving, there is negligible overhead on performance.
  • 12. Perfomance Impact – Spring AOP •Adds a constant delay of a few microseconds for each pointcut. •Perfomance might be affected if: • Advices are lengthy. • There are several aspects for a single pointcut. •See the following blog post.
  • 13. Example 1 – Before Aspect @Before("call(* org.aspectprogrammer.*.*(..))") public void callFromFoo(JoinPoint joinPoint) { System.out.println("Call from : " + joinPoint.getSignature ().getName()); }
  • 14. Example 1 – Pointcut Analysis @Before("call(* org.aspectprogrammer.*.*(..))") Return Type Package Advice Type Class Name Method Name Method Params AspectJ Keyword
  • 15. Example 2 – Around Aspect @Around("call(* org.aspectprogrammer..*(..))") public Object performance(ProceedingJoinPoint thisJoinPoint) { // do some business logic Object res = thisJoinPoint.proceed(); // do some more business logic return res; }
  • 16. A Short Dive into AspectJ AsepctJ comes in 2 flavors: 1. Annotations (like the ones mentioned above). 2. An extentsion of Java, with additional keywords like pointcut and aspect.
  • 17. AspectJ – Under the hood •AsepctJ uses a process called weaving to identify joinpoints and apply the advices. •It analyzes and manipulates the bytecode by using ASM and BCEL libraries.
  • 18. AspectJ Weaving Types •Load Time Weaving. •Compile Time Weaving. •Post Compilation Weaving.
  • 19. Using AspectJ AspectJ can be used in the following ways: 1. Command line launcher. 2. Maven plugin. 3. Via javaagent.
  • 20. Using AspectJ – Command Line 1. ajc for compile or post compile weaving. Examples: •ajc HelloWorld.java Trace.java •ajc -inpath app.jar -aspectpath tracelib.jar -outjar tracedapp.jar
  • 21. Using AspectJ – Command Line – Load Time Weaving 2. aj for load time weaving: •Compile your java code. •Compile your aspects using ajc. •Run your application with aj: aj com.mycompany.Myclass
  • 22. Using AspectJ – Load Time Weaving - Using javaagent Compile your classes and aspects, and add the following option to the JVM: javaagent:<path_to>/aspectjweaver.jar
  • 23. Using AspectJ – Load Time Weaving – configuration In order to configure to which classes and aspects to weave, write an aop.xml file: <aspectj> <aspects> <aspect name="com.aspects.MyAspect"/> </aspects> <weaver options="-showWeaveInfo"> <include within="com.app.MyController"/> <include within="org.3rdparty.beans..*"/> </weaver> </aspectj>
  • 24. Using AspectJ - Maven • Import AOP libraries to your pom file: <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.7</version> </dependency> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.8</version> </dependency>
  • 25. Using AspectJ – Maven – AspectJ Plugin Add AspectJ weaving plugin to your pom: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin>
  • 26. Using AspectJ – Maven – AspectJ Plugin – Cont’d Note: This plugin is used both for compiling aspects and weaving aspects in CTW.
  • 27. Defining Pointcuts using AspectJ AspectJ defines a broad set of keywords for defining pointcuts. Among them: • call, execute – when calling/executing a method. • get/set – when accessing a field in a class. • this – the currently executing joinpoint is instance of this.
  • 28. AspectJ – Inter Type Declaration Besides running advices, AspectJ can do the following: 1. Inject a field to a class. 2. Inject a method to a class. 3. Inject a constructor to a class. 4. Inject an interface to a class.
  • 29. Other AOP Libraries – Guice AOP • AOP library for Guice framework. • Does not use ApsectJ annotations. • Works with Matchers.
  • 30. Other AOP Libraries – Javassist • Bytecode injection library. • Injects code as strings.
  • 31. Why did we need AOP in eBay? • In one of our RESTful web services, we needed to add a certain request param to each error message in the log. • The classes writing the error messages are not aware of that param. • We did not want to change all calls to logger api in our modules, or be concerned with future calls.
  • 32. Demo 1 – Spring Demo https://github.com/amirko/spring-app-aop- example
  • 33. Demo 2 – AspectJ LTW https://github.com/amirko/aop-webapp-ltw.git
  • 34. Demo 3 – AspectJ CTW https://github.com/amirko/aop-webapp-ctw.git
  • 35. Aspects Library for Demos 2 + 3 https://github.com/amirko/aspects.git

Editor's Notes

  • #30: Javassist – no pointcuts, string codes. Guice – guice injects
  • #31: Javassist – no pointcuts, string codes. Guice – guice injects