aspect编译完成后如何改变aspect的point cut?

问题描述 投票:0回答:0

我有一个这样的日志记录方面,它会打印参数、结果或任何其他异常。我使用 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 项目中找不到任何参数化的方面解决方案

java aspectj aspect
© www.soinside.com 2019 - 2024. All rights reserved.