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 интерфейс?

Другие вопросы по тегам