gpt4 book ai didi

带注释参数的 aspectj 切入点

转载 作者:行者123 更新时间:2023-12-03 20:06:26 28 4
gpt4 key购买 nike

我正在使用 aspectj 来拦截用 @Profile(description="something") 注释的方法

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Profile {
public String description() default "";
}

@Around("com.merc.aop.ctw.aspect.PointcutDefinitions.logAnnotatedMethods(profile)")
public Object profile(ProceedingJoinPoint pjp, Profile profile) throws Throwable {
....
}

@Pointcut("@annotation(com.merc.annotations.Profile)")
protected void logAnnotatedMethods(Profile profile) {
}

但是我在使用 AJC 编译时收到以下错误消息
formal unbound in pointcut 

最佳答案

@Pointcut("@annotation(com.merc.annotations.Profile)")
protected void logAnnotatedMethods(Profile profile) {
}

这是不正确的, @annotation()需要参数名称,而不是参数类型。

如果您的类是用调试代码编译的,切入点参数必须与方法参数同名,否则,您需要依赖参数类型的唯一性或使用 argNames 显式写出您的参数名称。范围:
@Pointcut(value="@annotation(profile)",argNames="profile")
protected void logAnnotatedMethods(Profile arg) { }

引用:
  • @Pointcut javadocs
  • 关于带注释参数的 aspectj 切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922561/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com