SPRING-SOURCE.RU | |
|
|
public Bogatstvo goPohod() throws BadPohodException { logger.entry("goPohod(...)"); // действия logger.exit("goPohod(…)"); }
public aspect AutoLog { pointcut publicMethods() : execution (public * *(..)); pointcut logObjectCalls() : execution (* Logger.*(..)); pointcut loggableCalls() : publicMethods() && ! logObjectCalls(); before() : loggableCalls() { Logger.entry (thisJoinPoint.getSignature().toString()); } after() : loggableCalls() { Logger.exit (thisJoinPoint.getSignature().toString()); } }
Здесь первые три pointcut описывают, то, где будет применяться aspect.
pointcut publicMethods() : execution (public * *(..)) – на всех public методах
pointcut logObjectCalls() : execution (* Logger.*(..)) – на всех методах класса Logger
pointcut loggableCalls() : publicMethods() && ! logObjectCalls() – объединяет предыдущих два ( на всех public методах кроме методов класса Logger)
Before и after – это то, что будет выполняться до метода и после него. Функциональность Logger-а вынесена в отдельный класс. В итоге public метод о логировании знать ничего не будет. Он будет выполняться как и раньше.
Copyright © 2024 |