AOP pointcut (с использованием аннотации) для регистрации всех методов, кроме сеттеров и геттеров из POJO, при использовании пакета по структуре каталогов объектов
Я использую AspectJ (AOP) для целей регистрации. У меня следующая структура пакета:
com.company.base
com.company.base.common.Result.java
(its a POJO containing 3 fields and their setters and getters and implements Serialize)
com.company.base.feature1.User.java
(its a POJO containing 5 fields and their setters and getters and implements Serialize)
com.company.base.feature2.Customer.java
(its a POJO containing 2 fields and their setters and getters and implements Serialize)
Мое требование: 1) регистрировать сообщения о входе и выходе, когда любой метод выполняется из любого класса, кроме от установщика и получателя POJO 2) должна быть минимальная строка кода
Я использую следующее определение точки отсечения, но оно также вызывает совет во время установки и получения.
@Pointcut("execution(* com.company.base..*(..))")
void allMethodExcution() {}
Пожалуйста, предложите как можно скорее.
1 ответ
Решение
Я думаю, что я получил частичный ответ на мой вопрос (может быть, не точный).
1] Все POJO помечены @XmlRootElement
поэтому я создал еще один pointcut и следующий совет
// join points created by following point cuts
@Pointcut("within(@javax...XmlRootElement *)")
public void beanAnnotatedWithSpecificAnnotation()
@Pointcut("execution(* com.company.base..*(..))")
public void allMethods()
// this is advise
@Before("!beanAnnotatedWithSpecificAnnotation() && allMethods()")
public void applyAdvise(JoinPoint jp) {
// TODO: advise code ...
}
2] Но что делать, если POJO не содержит @XmlRootElement
и только реализует java.io.Serialize
интерфейс?