Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Programmiertechniken in verteilten
Systemen
Dipl.-Ing. Paul Panhofer Bsc.
8. Januar 2021
sytd htl krems - alauntalstrasse 29
• Transaction Management
• Logging
• Performance Monitor
• Ecxeption Handling
• Security
• Audit Log Management
tr.start();
Double value = bankService.checkAccount(accountId);
tr.commit();
}
}
tr.commit();
return result;
}
}
Dipl.-Ing. Paul Panhofer Bsc. — Spring Boot — 8. Januar 2021
18/34
sytd htl krems - alauntalstrasse 29
@Component
@Aspect // Definition eines Aspekts
public class TransactionAspect {
expression(
modifiers-pattern? // optional
return-type-pattern
declaring-type-pattern? // optional
method-name-pattern(param-pattern)
thorws-pattern? // optional
)
/*
* checkAccount Methode der BankService Klasse
*/
expression(
public
Double
at.htl.krems.service.BankService.checkAccount(..)
)
/*
* checkAccount Methode einer beliebigen Klasse
*/
expression(
public
Double
checkAccount(..)
)
/*
* beliebige Methode deren Name mit check beginnt
*/
expression(
*
*
check*(..)
)
/*
* checkAccount Methode aller Klassen in einem bestimmten
* Package
*/
expression(
*
*
at.htl.krems.service.*.*(..)
)
// keine Parameter
expression( public double checkAccount() )
@Before("execution(* * checkAccount(..))")
public void logCall(JointPoint jp){
...
MethodSignature ms = (MethodSignature)
jp.getSignature();
log.info(ms);
..
Object[] args = jp.getArg();
...
}
@Component
@Aspect
public class LoggingAspect{
@AfterReturning(
pointcut="execution(* * checkAccount(..))",
returning="value")
public void logCall(JointPoint jp, double value){
...
}
@Component
@Aspect
public class LoggingAspect{
@AfterThrowing(
pointcut="execution(* * checkAccount(..))",
throwing="ex")
public void logCall(JointPoint jp, Throwable ex){
...
}
}
return result;
}
}