Download presentation
Presentation is loading. Please wait.
1
Spring Transaction & Spring AOP
ศิรส สุภาวิตา @siros_s
2
Agenda: Spring Transaction
Why Spring Transaction Transaction Manager Declarative Transaction with Annotation @Transactional Propagation Exception Handling
3
Why Spring Transaction?
Uniform API Transactional resource synchronization On and off server Declarative Transaction
4
What about JTA? Require J(2)EE container (server)
Require EJB for declarative transaction Necessary for distributed transaction
5
Uniform API Application Spring Transaction JDBC ORM JCA JTA
6
Transactional Resource Sync
Spring Transaction
7
On and Off Server Spring Spring Spring Servlet Container J(2)EE
Java
8
Declarative Transaction
B C Begin Commit D Begin Commit D B C
9
Declarative Transaction (cont.)
Transaction Demarcation Transaction logic is NOT the main business logic Reuse business logic with different transaction logic Programmatic transaction demarcation is NOT the answer
10
Transactional Resource
Transaction Manager Transactional Resource Transaction Manager
11
Transaction Annotation
Use annotation to declare transaction scope Require just one line of config in XML
12
Example: MyService
13
Example: Transactional MyService
14
Example: Detailed MyService
15
Propagation Define how transaction manager handles transaction
SUPPORTS NOT_SUPPORTED REQUIRED REQUIRES_NEW MANDATORY NEVER NESTED
16
Example: Propagation A B C D REQUIRED SUPPORTS REQUIRED MANDAROTY
REQUIRES_NEW NEVER A B C D REQUIRES_NEW
17
Exception Handling Default behavior
Rollback for unchecked exception No rollback for checked exception Can be changed properties rollbackFor rollbackForClassname noRollbackFor noRollbackForClassname
18
Example: Exception Handling
19
Wait!! There is a better way!!
Q & A
20
Agenda: Spring AOP Problems of existing approach AOP Definition
AOP Proxy Spring AOP Spring Transaction with AOP
21
Problems?? Transaction policy is still defined locally on each class rather than globally across all classes. Modularity & Reusability Scattering & Tangling Even a medium sized application has multiple “concerns”.
22
Example of Transaction Policy
All top level service operations must begin a new transaction (REQUIRES_NEW). Lower level service operations must operate under an existing transaction (MANDATORY). Data access operation should operate under a transaction (REQUIRES). The problem is that policies or concerns are usually applied based on neither class nor class hierarchy. They are mostly random.
23
Scattering obj.lastModified = new Date();
Customer cust = new Customer(); … cust.lastModified = new Date(); saveCustomer(cust); Invoice inv = new Invoice(); … inv.lastModified = new Date(); saveInvoice(inv); Course crs = new Course(); … crs.lastModified = new Date(); saveCourse(crs);
24
Scattering: Modified obj.lastModifiedBy = currentUser();
obj.lastModified = new Date(); Customer cust = new Customer(); … cust.lastModifiedBy = currentUser(); cust.lastModified = new Date(); saveCustomer(cust); Invoice inv = new Invoice(); … inv.lastModifiedBy = currentUser(); inv.lastModified = new Date(); saveInvoice(inv); Course crs = new Course(); … crs.lastModifiedBy = currentUser(); crs.lastModified = new Date(); saveCourse(crs);
25
Tangling obj.lastModified = new Date(); Course crs = new Course(); …
saveCourse(crs); logger.log(“Start operation”); logger.log(“Start operation”); tx = new Transaction(); tx.begin(); Course crs = new Course(); crs.id = generateUUID(); … crs.lastModified = new Date(); saveCourse(crs); tx.commit(); obj.id = generateUUID(); tx = new Transaction(); tx.begin(); … tx.commit();
26
Aspect-Oriented Programming
Concerns are designed and implemented independently During build time or runtime, concerns are compiled into full functioned application. This process is called “weaving”.
27
AOP Definition Aspect Join Point Pointcut Advice
28
Join Point public void createCustomer() { x
Customer cust = new Customer(); … saveCustomer(cust); }
29
Pointcut public void createCustomer() { x
Customer cust = new Customer(); … saveCustomer(cust); }
30
Advice public void createCustomer() { logger.log(“Start create…”);
Customer cust = new Customer(); cust.id = generateUUID(); … cust.lastModified = new Date(); saveCustomer(cust); }
31
AOP Proxy Caller Target Object Advice Proxy Advice Advice
32
Spring AOP
33
Supported Pointcuts execution within this target args
34
execution execution(<modifier> <return-type> <declaring-type> <method-name> (<param>) <throws>) execution(* *(..)) execution(public void set*(..)) execution(public * com.spring66.service.*.*(..)) execution(public * com.spring66.service..*.*(..))
35
within within(com.spring66.service.*) within(com.spring66.service..*)
36
Advice before after after-returning after-throwing around
37
Spring Transaction with AOP
38
Is that all? Q & A
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.