AOP切入点(使用注释)在使用按功能区目录结构打包时记录除POJO中的setter和getter之外的所有方法

时间:2014-03-03 22:00:55

标签: java aop aspectj

我使用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() {}

请尽快建议。

1 个答案:

答案 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接口会怎样?