АОП позволяет определять сквозные задачи (ведение журнала, транзакции, безопасность) один раз, а не дублировать их в несвязанных методах. Аспект — это модуль, содержащий поведение; совет — это реальный код, который выполняется; pointcut — это выражение, объявляющее где (какие методы) оно применяется.
Пример
@Aspect@ComponentpublicclassLoggingAspect {
@Around("@annotation(com.acme.Loggable)")publicObjectlogExecutionTime(ProceedingJoinPoint pjp)throws Throwable {
longstart= System.currentTimeMillis();
Objectresult= pjp.proceed(); // invokes the real method
log.info("{} took {}ms", pjp.getSignature(), System.currentTimeMillis() - start);
return result;
}
}
Итог
АОП позволяет определять сквозные задачи (ведение журнала, транзакции, безопасность) один раз, а не дублировать их в несвязанных методах.
Какую проблему решает аспектно-ориентированное программирование и в… · Sobeso