Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Spring Framework
AOP
2st WEEK
30 Jun
GEEKY ACADEMY 2013
2 | GEEK ACADEMY 2013
INSTRUCTOR TEAM
SALAHPIYA
Salah (Dean) Chalermthai
Siam Chamnan Kit
SChalermthai@sprint3r.com
Piya (...
3 | GEEK ACADEMY 2013
Topic
• Intro to AOP
• Basic AOP Concepts
• Getting Started with Spring AOP
Introduction to AOP
GEEK ACADEMY 2013
5 | GEEK ACADEMY 2013
Intro to AOP
• Why worrying about Crosscutting Concerns?
• What AOP Does?
• Crosscutting Concerns
• ...
6 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
public void withdraw(long accId, int amount) {
Account acc...
7 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
public void withdraw(long accId, int amount) {
if (hasPerm...
8 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
public void withdraw(long accId, int amount) {
if (hasPerm...
9 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
public void withdraw(long accId, int amount) {
if (hasPerm...
10 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
Business
Permission
Logger
Transaction
Service A
Service ...
11 | GEEK ACADEMY 2013
Why worrying about Crosscutting Concerns?
• Too many relationship to the crosscutting objects
• Cod...
12 | GEEK ACADEMY 2013
What AOP Does?
• AOP will separate the Crosscutting concerns from the
System
13 | GEEK ACADEMY 2013
Crosscutting Concerns
public void withdraw(int amount) {
balance = balance - amount;
}
public void ...
14 | GEEK ACADEMY 2013
Cross-Cutting Concerns Examples
• Logging and Tracing
• Transaction Management
• Security
• Caching...
Basic AOP Concepts
GEEK ACADEMY 2013
16 | GEEK ACADEMY 2013
Basic AOP Concepts
• What is AOP?
• AOP Terminology
• Advice
• How Spring AOP Works
• AOP and OOP
•...
17 | GEEK ACADEMY 2013
What is AOP?
• is a programming paradigm
• extends OOP
• enables modularization of crosscutting con...
18 | GEEK ACADEMY 2013
AOP Terminology
19 | GEEK ACADEMY 2013
AOP Terminology
• Joinpoint – Defines A Point During the Execution of a
program. We can insert Addi...
20 | GEEK ACADEMY 2013
AOP Terminology
• Aspect – a modularization of a Crosscutting concern.
• Target object - object bei...
21 | GEEK ACADEMY 2013
AOP Weaving
• Process of applying aspects to a target object
• Will create a proxied object
22 | GEEK ACADEMY 2013
How AOP Works
• Write your mainline application logic (Solve core problem)
• Write aspects to imple...
23 | GEEK ACADEMY 2013
AOP and OOP
• Aspect – code unit that encapsulates
pointcuts, advice, and attributes
• Pointcut – d...
24 | GEEK ACADEMY 2013
Leading AOP Technologies
• AspectJ
– 1995, original AOP technology
– Offers a full Aspect Oriented ...
Getting Started with
Spring AOP
GEEK ACADEMY 2013
26 | GEEK ACADEMY 2013
Getting Started with Spring AOP
• Spring AOP
• Aspect
• Pointcut
• Advice
• Bean in Spring containe...
27 | GEEK ACADEMY 2013
Spring AOP
• Implemented in pure java
• No need for a special compilation process
• Supports only m...
28 | GEEK ACADEMY 2013
@Aspect
@Aspect
public class LoggingAspect {
...
}
<aop:aspectj-autoproxy />
<bean class="mypackage...
29 | GEEK ACADEMY 2013
Pointcut
30 | GEEK ACADEMY 2013
Pointcut
• @Pointcut
• Pointcut expression
• Pointcut designators
• Example
31 | GEEK ACADEMY 2013
@Pointcut
@Aspect
public class LoggingAspect {
@Pointcut("execution(* mypackage.service..*.*(..))")...
32 | GEEK ACADEMY 2013
Pointcut expression
• PCD - Pointcut designators.
• method scope
– Advice will be applied to all th...
33 | GEEK ACADEMY 2013
Pointcut expression(2)
• declaring type
– Advice will be applied to all the methods of this type. I...
34 | GEEK ACADEMY 2013
Pointcut designators
• Code based
– execution (Method Patterns)
• the primary pointcut designator y...
35 | GEEK ACADEMY 2013
Pointcut designators(2)
• Code based(2)
– this
• where the bean reference (Spring AOP proxy) is an ...
36 | GEEK ACADEMY 2013
Pointcut designators(3)
• Annotation based
– @annotation
• where the subject of the join point (met...
37 | GEEK ACADEMY 2013
Pointcut designators(4)
• Annotation based(2)
– @target
• where the class of the executing object h...
38 | GEEK ACADEMY 2013
Pointcut example
• the execution of any public method:
execution(public * *(..))
• the execution of...
39 | GEEK ACADEMY 2013
Pointcut example(2)
• any join point (method execution only in Spring AOP) WITHIN the
service packa...
40 | GEEK ACADEMY 2013
Pointcut example(3)
• Other example
– Pointcut example - Spring Framework Reference
41 | GEEK ACADEMY 2013
Advice
42 | GEEK ACADEMY 2013
Advice
• Advice types
• @Before
• @After
• @AfterReturning
• @AfterThrowing
• @Around
43 | GEEK ACADEMY 2013
Advice
• Action teken at particular Joinpoint is called as an Advice
• Defines What needs to be App...
44 | GEEK ACADEMY 2013
Advice types
• Before
• After
• After Returning
• After Throwing
• Around
Method
Return Throw
Succe...
45 | GEEK ACADEMY 2013
@Before
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *(..))")
public void ifService(...
46 | GEEK ACADEMY 2013
@After
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *(..))")
public void ifService()...
47 | GEEK ACADEMY 2013
@AfterReturning
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *(..))")
public void if...
48 | GEEK ACADEMY 2013
@AfterThrowing
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *(..))")
public void ifS...
49 | GEEK ACADEMY 2013
@Around
@Aspect
public class LoggingAspect {
@Pointcut("execution(* *(..))")
public void ifService(...
50 | GEEK ACADEMY 2013
Security
Bean in Spring container
Logging
Caching
Target
Object
51 | GEEK ACADEMY 2013
How it really works (TX example)
52 | GEEK ACADEMY 2013
LAB1 Basic Spring AOP
53 | GEEK ACADEMY 2013
LAB1 Basic Spring AOP
Target
Object
Logging
54 | GEEK ACADEMY 2013
Links
• SpringSource
• Spring Reference 3.2
• Thank for
– Dmitry Noskov
– chamilavt
– Java Brains
55 | GEEK ACADEMY 2013
Books
GEEK ACADEMY 2013
THANK YOU FOR
YOUR TIME
GEEK ACADEMY 2013
Upcoming SlideShare
Loading in …5
×

of

Spring framework aop Slide 1 Spring framework aop Slide 2 Spring framework aop Slide 3 Spring framework aop Slide 4 Spring framework aop Slide 5 Spring framework aop Slide 6 Spring framework aop Slide 7 Spring framework aop Slide 8 Spring framework aop Slide 9 Spring framework aop Slide 10 Spring framework aop Slide 11 Spring framework aop Slide 12 Spring framework aop Slide 13 Spring framework aop Slide 14 Spring framework aop Slide 15 Spring framework aop Slide 16 Spring framework aop Slide 17 Spring framework aop Slide 18 Spring framework aop Slide 19 Spring framework aop Slide 20 Spring framework aop Slide 21 Spring framework aop Slide 22 Spring framework aop Slide 23 Spring framework aop Slide 24 Spring framework aop Slide 25 Spring framework aop Slide 26 Spring framework aop Slide 27 Spring framework aop Slide 28 Spring framework aop Slide 29 Spring framework aop Slide 30 Spring framework aop Slide 31 Spring framework aop Slide 32 Spring framework aop Slide 33 Spring framework aop Slide 34 Spring framework aop Slide 35 Spring framework aop Slide 36 Spring framework aop Slide 37 Spring framework aop Slide 38 Spring framework aop Slide 39 Spring framework aop Slide 40 Spring framework aop Slide 41 Spring framework aop Slide 42 Spring framework aop Slide 43 Spring framework aop Slide 44 Spring framework aop Slide 45 Spring framework aop Slide 46 Spring framework aop Slide 47 Spring framework aop Slide 48 Spring framework aop Slide 49 Spring framework aop Slide 50 Spring framework aop Slide 51 Spring framework aop Slide 52 Spring framework aop Slide 53 Spring framework aop Slide 54 Spring framework aop Slide 55 Spring framework aop Slide 56 Spring framework aop Slide 57
Upcoming SlideShare
Weaving aspects in PHP with the help of Go! AOP library
Next

9 Likes

Share

Spring framework aop

Related Books

Free with a 30 day trial from Scribd

See all

Spring framework aop

  1. 1. Spring Framework AOP 2st WEEK 30 Jun GEEKY ACADEMY 2013
  2. 2. 2 | GEEK ACADEMY 2013 INSTRUCTOR TEAM SALAHPIYA Salah (Dean) Chalermthai Siam Chamnan Kit SChalermthai@sprint3r.com Piya (Tae) Lumyong - piya.tae@gmail.com
  3. 3. 3 | GEEK ACADEMY 2013 Topic • Intro to AOP • Basic AOP Concepts • Getting Started with Spring AOP
  4. 4. Introduction to AOP GEEK ACADEMY 2013
  5. 5. 5 | GEEK ACADEMY 2013 Intro to AOP • Why worrying about Crosscutting Concerns? • What AOP Does? • Crosscutting Concerns • Example
  6. 6. 6 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? public void withdraw(long accId, int amount) { Account account = (Account)session.get(Account.class, accId); double balance = account.getBalance(); balance = balance - amount; account.setBalance(balance); session.save(balance); } Business
  7. 7. 7 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? public void withdraw(long accId, int amount) { if (hasPermission(accId)) { Account account = (Account)session.get(Account.class, accId); double balance = account.getBalance(); balance = balance - amount; account.setBalance(balance); session.save(balance); } else { throw new SecurityException("Access Denied"); } } Business Permission
  8. 8. 8 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? public void withdraw(long accId, int amount) { if (hasPermission(accId)) { bankLogger.info(accId + " withdrow amount " + amount); Account account = (Account)session.get(Account.class, accId); double balance = account.getBalance(); balance = balance - amount; account.setBalance(balance); session.save(balance); } else { throw new SecurityException("Access Denied"); } } Business Permission Logger
  9. 9. 9 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? public void withdraw(long accId, int amount) { if (hasPermission(accId)) { bankLogger.info(accId + " withdrow amount " + amount); Transaction tx = null; try { Transaction tx = session.beginTransaction(); Account account = (Account)session.get(Account.class, accId); double balance = account.getBalance(); balance = balance - amount; account.setBalance(balance); session.save(balance); tx.commit(); } catch(RuntimeException ex) { if (tx!=null) tx.rollback; } } else { throw new SecurityException("Access Denied"); } } Business Permission Logger Transaction
  10. 10. 10 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? Business Permission Logger Transaction Service A Service B Service C
  11. 11. 11 | GEEK ACADEMY 2013 Why worrying about Crosscutting Concerns? • Too many relationship to the crosscutting objects • Code is still required in all methods • Cannot all be changed at one
  12. 12. 12 | GEEK ACADEMY 2013 What AOP Does? • AOP will separate the Crosscutting concerns from the System
  13. 13. 13 | GEEK ACADEMY 2013 Crosscutting Concerns public void withdraw(int amount) { balance = balance - amount; } public void deposit(int amount) { balance = balance + amount; } Logger bankLogger.info("Withdraw " + amount); bankLogger.info("Withdraw " + amount); Transaction tx.commit(); tx.commit(); tx.begin(); tx.begin(); Ref AOP Spring
  14. 14. 14 | GEEK ACADEMY 2013 Cross-Cutting Concerns Examples • Logging and Tracing • Transaction Management • Security • Caching • Error Handling • Performance Monitoring • Custom Business Rules
  15. 15. Basic AOP Concepts GEEK ACADEMY 2013
  16. 16. 16 | GEEK ACADEMY 2013 Basic AOP Concepts • What is AOP? • AOP Terminology • Advice • How Spring AOP Works • AOP and OOP • Leading AOP Technologies
  17. 17. 17 | GEEK ACADEMY 2013 What is AOP? • is a programming paradigm • extends OOP • enables modularization of crosscutting concerns • is second heart of Spring Framework
  18. 18. 18 | GEEK ACADEMY 2013 AOP Terminology
  19. 19. 19 | GEEK ACADEMY 2013 AOP Terminology • Joinpoint – Defines A Point During the Execution of a program. We can insert Additional logics at Joinpoints • Advice – Action taken(Functionality) at a Joinpoint. • Pointcut – Combination of Joinpoints where the Advice need to be Applied.
  20. 20. 20 | GEEK ACADEMY 2013 AOP Terminology • Aspect – a modularization of a Crosscutting concern. • Target object - object being advised by one or more aspects. • AOP proxy – Will manage the way of Applying Aspects at particular Pointcuts. PointCut Advice PointCut Advice PointCut Advice Aspect Target Object Proxy Call
  21. 21. 21 | GEEK ACADEMY 2013 AOP Weaving • Process of applying aspects to a target object • Will create a proxied object
  22. 22. 22 | GEEK ACADEMY 2013 How AOP Works • Write your mainline application logic (Solve core problem) • Write aspects to implement cross-cutting concerns (Write aspects) • Bind it all together (Weave at runtime)
  23. 23. 23 | GEEK ACADEMY 2013 AOP and OOP • Aspect – code unit that encapsulates pointcuts, advice, and attributes • Pointcut – define the set of entry points (triggers) in which advice is executed • Advice – implementation of cross cutting concern • Weaver – construct code (source or object) with advice • Class – code unit that encapsulates methods and attributes • Method signature – define the entry points for the execution of method bodies • Method bodies – implementation of the business logic concerns • Compiler – convert source code to object code AOP OOP
  24. 24. 24 | GEEK ACADEMY 2013 Leading AOP Technologies • AspectJ – 1995, original AOP technology – Offers a full Aspect Oriented Programming language – Modifies byte code to add aspects into your application! • Spring AOP – Uses dynamic proxies to add aspects into your application – Only spring beans can be advised – Uses some of AspectJ expression syntax
  25. 25. Getting Started with Spring AOP GEEK ACADEMY 2013
  26. 26. 26 | GEEK ACADEMY 2013 Getting Started with Spring AOP • Spring AOP • Aspect • Pointcut • Advice • Bean in Spring container • How it really works • Additional • Spring AOP vs AspectJ • @AspectJ vs XML
  27. 27. 27 | GEEK ACADEMY 2013 Spring AOP • Implemented in pure java • No need for a special compilation process • Supports only method execution join points • Only runtime weaving is available • AOP proxy – JDK dynamic proxy – CGLIB proxy • Configuration – @AspectJ annotation-style – Spring XML configuration-style
  28. 28. 28 | GEEK ACADEMY 2013 @Aspect @Aspect public class LoggingAspect { ... } <aop:aspectj-autoproxy /> <bean class="mypackage.LoggingAspect" />
  29. 29. 29 | GEEK ACADEMY 2013 Pointcut
  30. 30. 30 | GEEK ACADEMY 2013 Pointcut • @Pointcut • Pointcut expression • Pointcut designators • Example
  31. 31. 31 | GEEK ACADEMY 2013 @Pointcut @Aspect public class LoggingAspect { @Pointcut("execution(* mypackage.service..*.*(..))") public void ifService() {} @Pointcut("execution(* mypackage.repository..*.*(..))") public void ifRepository() {} ... }
  32. 32. 32 | GEEK ACADEMY 2013 Pointcut expression • PCD - Pointcut designators. • method scope – Advice will be applied to all the methods having this scope. For e.g., public, private, etc. Spring AOP only supports advising public methods. • return type – Advice will be applied to all the methods having this return type. PCD(<method scope> <return type> <declaring type>.<name(param)> <throw>)
  33. 33. 33 | GEEK ACADEMY 2013 Pointcut expression(2) • declaring type – Advice will be applied to all the methods of this type. If the class and advice are in the same package then package name is not required • name(param) – Filter the method names and the argument types. Two dots(..) means any number(0-more) and type of parameters. • throw PCD(<method scope> <return type> <declaring type>.<name(param)> <throw>)
  34. 34. 34 | GEEK ACADEMY 2013 Pointcut designators • Code based – execution (Method Patterns) • the primary pointcut designator you will use when working with Spring AOP – within (Type Patterns) • within certain types (simply the execution of a method declared within a matching type when using Spring AOP) – target • where the target object (application object being proxied) is an instance of the given type
  35. 35. 35 | GEEK ACADEMY 2013 Pointcut designators(2) • Code based(2) – this • where the bean reference (Spring AOP proxy) is an instance of the given type – args • where the arguments are instances of the given types – bean (Bean Name Patterns) • to a particular named Spring bean, or to a set of named Spring beans (when using wildcards)
  36. 36. 36 | GEEK ACADEMY 2013 Pointcut designators(3) • Annotation based – @annotation • where the subject of the join point (method being executed in Spring AOP) has the given annotation – @within • within types that have the given annotation (the execution of methods declared in types with the given annotation when using Spring AOP)
  37. 37. 37 | GEEK ACADEMY 2013 Pointcut designators(4) • Annotation based(2) – @target • where the class of the executing object has an annotation of the given type – @args • where the runtime type of the actual arguments passed have annotations of the given type(s)
  38. 38. 38 | GEEK ACADEMY 2013 Pointcut example • the execution of any public method: execution(public * *(..)) • the execution of any method with a name beginning with “set”: execution(* set*(..)) • the execution of any method defined by the MyService interface execution(* com.xyz.service.MyService.*(..)) • the execution of any method defined in the service package: execution(* com.xyz.service.*.*(..)) • the execution of any method defined in the service package or a sub-package: execution(* com.xyz.service..*.*(..))
  39. 39. 39 | GEEK ACADEMY 2013 Pointcut example(2) • any join point (method execution only in Spring AOP) WITHIN the service package: within(com.xyz.service.*) • any join point (method execution only in Spring AOP) within the service package or a sub-package: within(com.xyz.service..*) • any join point (method execution only in Spring AOP) where the proxy implements the AccountService interface: this(com.xyz.service.AccountService)
  40. 40. 40 | GEEK ACADEMY 2013 Pointcut example(3) • Other example – Pointcut example - Spring Framework Reference
  41. 41. 41 | GEEK ACADEMY 2013 Advice
  42. 42. 42 | GEEK ACADEMY 2013 Advice • Advice types • @Before • @After • @AfterReturning • @AfterThrowing • @Around
  43. 43. 43 | GEEK ACADEMY 2013 Advice • Action teken at particular Joinpoint is called as an Advice • Defines What needs to be Applied and When – What – Functionality – When – Advice Type
  44. 44. 44 | GEEK ACADEMY 2013 Advice types • Before • After • After Returning • After Throwing • Around Method Return Throw Success call Call
  45. 45. 45 | GEEK ACADEMY 2013 @Before @Aspect public class LoggingAspect { @Pointcut("execution(* *(..))") public void ifService() {} @Before("ifService()") public void logBefore(JoinPoint joinPoint) { ... } ... }
  46. 46. 46 | GEEK ACADEMY 2013 @After @Aspect public class LoggingAspect { @Pointcut("execution(* *(..))") public void ifService() {} @After("ifService()") public void logAfter(JoinPoint joinPoint) { ... } ... }
  47. 47. 47 | GEEK ACADEMY 2013 @AfterReturning @Aspect public class LoggingAspect { @Pointcut("execution(* *(..))") public void ifService() {} @AfterReturning(pointcut = "ifService()", returning = "result") public void logAfterReturning(JoinPoint joinPoint, Object result) { ... } ... }
  48. 48. 48 | GEEK ACADEMY 2013 @AfterThrowing @Aspect public class LoggingAspect { @Pointcut("execution(* *(..))") public void ifService() {} @AfterThrowing(pointcut = "ifService()", throwing = "error") public void logAfterThrowing(JoinPoint joinPoint, Throwable error) { ... } ... }
  49. 49. 49 | GEEK ACADEMY 2013 @Around @Aspect public class LoggingAspect { @Pointcut("execution(* *(..))") public void ifService() {} @Around("ifService()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { ... Object result = joinPoint.proceed(); ... return result; } ... }
  50. 50. 50 | GEEK ACADEMY 2013 Security Bean in Spring container Logging Caching Target Object
  51. 51. 51 | GEEK ACADEMY 2013 How it really works (TX example)
  52. 52. 52 | GEEK ACADEMY 2013 LAB1 Basic Spring AOP
  53. 53. 53 | GEEK ACADEMY 2013 LAB1 Basic Spring AOP Target Object Logging
  54. 54. 54 | GEEK ACADEMY 2013 Links • SpringSource • Spring Reference 3.2 • Thank for – Dmitry Noskov – chamilavt – Java Brains
  55. 55. 55 | GEEK ACADEMY 2013 Books
  56. 56. GEEK ACADEMY 2013
  57. 57. THANK YOU FOR YOUR TIME GEEK ACADEMY 2013
  • JagmeetAraich

    Nov. 5, 2017
  • luv2code

    Apr. 16, 2017
  • KimOatGirlsfriend

    Oct. 23, 2015
  • ssuser6e94e8

    Sep. 14, 2015
  • Syberstep

    Jul. 13, 2015
  • tinhcao

    Apr. 27, 2015
  • phuocnt79

    Dec. 9, 2014
  • xuanbinhit

    Dec. 2, 2014
  • Jojas

    Jul. 1, 2013

Views

Total views

2,654

On Slideshare

0

From embeds

0

Number of embeds

1

Actions

Downloads

31

Shares

0

Comments

0

Likes

9

×