我有一个这样的日志记录方面,它会打印参数、结果或任何其他异常。我使用 aspectj-maven-plugin 来编译这方面。然后,将编译结果打包成一个jar。我会将这个 jar 提供给我们的 maven 存储库,这样他们就可以在他们的项目中依赖这个 jar。如果他们需要记录任何请求信息,他们只需要在方法定义处写一个注解@Log。我还想提供“包分配能力”:我的同事可以在编译他们的项目时设置一个包参数,然后在该包内调用的所有方法都将被删除。
综上所述,就像下面代码中的customPointCut,当我在另一个项目中需要这个编译的asject时,我想改变切入点定义。
@Aspect
public class LogAspect {
static private final Logger log = Logger.getLogger(LogAspect.class);
@Pointcut("execution(@com.stellariver.milky.aspectj.tool.log.Log * *(..))")
private void annoPointCut() {}
@Pointcut("execution(* com.project.package..*.*(..))")
private void customPointCut() {}
@Around("annoPointCut() || customPointCut()")
public Object valid(ProceedingJoinPoint pjp) throws Throwable {
Object result = null;
try {
result = pjp.proceed();
} catch (Throwable throwable) {
throw throwable;
} finally {
log(xx,xx);
}
return result;
}
}
我在方面项目或 aspect-maven-plugin 项目中找不到任何参数化的方面解决方案