3. Czym jest programowanie
aspektowe?
• AOP powstało po OOP
• Pozwala odseparować logikę aplikacji od
powtarzających się, nadmiarowych operacji
• Mechanizm dynamicznie tworzący kod
wynikowy
• Mechanizm poprawiający jakość kodu
4. Podstawowe pojęcia w prostych
słowach
• Aspekt ‐ wyodrębniona, powtarzająca (przecinająca)
się część logiki aplikacji
• Join points ‐ wszystkie możliwe miejsca, w które można
wpiąć aspekt podczas uruchomienia programu
• Pointcuts ‐ miejsca, w których dany aspekt faktycznie
zachodzi (wykonuje się)
• Advice ‐ konkretne działania mające miejsce w chwili
wykonania odpowiedniego punktu złączenia
• Tkacz – mechanizm spinający to wszystko w całość
5. Przykłady (1)
@Aspect
public class LoggerAspect {
private long start;
private Logger logger;
@Before("execution(* eu.lukaszbachman.blog.data.*.*(..))")
public void logBeforeMethod(JoinPoint joinPoint) {
logger.debug("n--------------------------- BEFORE ---------------------------");
logger.debug("Method name:t" + joinPoint.getSignature().getName());
logger.debug("Method args:t");
for (int i = 0; i < joinPoint.getArgs().length; i++){
logger.debug(joinPoint.getArgs()[i]);
logger.debug((i == joinPoint.getArgs().length - 1) ? "n" : ", ");
}
start = System.currentTimeMillis();
}
@After("execution(* eu.lukaszbachman.blog.data.*.*(..))")
public void logAfterMethod() {
logger.debug("Exec time:t" + (System.currentTimeMillis() - start) + "msn");
logger.debug("--------------------------- AFTER ----------------------------");
}
}