我创建了一个名称为Validation的注释,并在方法参数上注入了代码,并且在调用之前一直使用Aspect来验证我的对象。它不起作用
注释代码
page.button(root)
操作码
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Validation {}
将注释用作@Aspect
@Component
public class ValidatorAOP {
@Before("valditionAnnotation()")
public void validate(final JoinPoint jp) throws Throwable {
Validator object = (Validator) jp.getTarget();
object.validator();
}
@Pointcut("@annotation(Validation)")
public void valditionAnnotation() {
}
}
答案 0 :(得分:1)
在任何带有参数@Validation
注释的方法之前调用此方法,我认为这就是您想要的:
@Before("execution(* *(.., @Validation (*), ..)) && args(.., toVerify)")
public void validate(final JoinPoint joinPoint, final Object toVerify) {
}
如果您不希望使用参数值,则只需删除&& ...
部分和方法参数即可。
@Before("execution(* *(.., @Validation (*), ..)) && args(.., toVerify)")
| | | | | | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 12
@Validation
注释)Object toVerify
)中的相同请注意,如果您使用的方法带有多个参数,其中一些参数带有注释,有些则没有注释,还有其他组合-不确定它将始终有效。