我使用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的setter和getter之外的任何类执行时,记录进入和退出消息 2)最小代码行应该在那里
我正在使用以下切入点定义,但它也在setter和getter时间调用建议。
@Pointcut("execution(* com.company.base..*(..))")
void allMethodExcution() {}
请尽快建议。
答案 0 :(得分:0)
我想我对我的问题得到了部分答案(可能不是确切的答案)。
1]所有POJO都注明@XmlRootElement
所以我创建了一个切入点并遵循建议
// 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
接口会怎样?