方法参数 aspectj 不工作 spring 启动
method parameter aspectj is not working spring boot
我创建了一个名称为 Validation 的注解并在方法参数上注入,并且我一直在调用前使用 aspect 来验证我的对象。它不工作
注释代码
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Validation {}
Aop 代码
@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() {
}
}
使用注释作为 public TrackingId createNewOrder(@Validation Order newOrder)
这是在任何带有 @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
- 在连接点
之前调用了通知
- 匹配方式执行连接点
- 方法可见性,匹配任何(public,私有等)
- 方法名,匹配任意
- 如果你的论点不是唯一的,它可以在其他论点之间(没有用
@Validation
注释)
- 您要查找的注释
- 注释的参数类型
- 见 5.
- 到组合表达式
- 使参数可用到你的方法
- 如5和8,可能不是第一个参数
- 参数名称,与方法签名相同 (
Object toVerify
)
如果您的方法有多个参数,有些有注释,有些没有,还有其他组合,请小心 - 不确定它是否总是有效。
我创建了一个名称为 Validation 的注解并在方法参数上注入,并且我一直在调用前使用 aspect 来验证我的对象。它不工作
注释代码
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Validation {}
Aop 代码
@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() {
}
}
使用注释作为 public TrackingId createNewOrder(@Validation Order newOrder)
这是在任何带有 @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
- 在连接点 之前调用了通知
- 匹配方式执行连接点
- 方法可见性,匹配任何(public,私有等)
- 方法名,匹配任意
- 如果你的论点不是唯一的,它可以在其他论点之间(没有用
@Validation
注释) - 您要查找的注释
- 注释的参数类型
- 见 5.
- 到组合表达式
- 使参数可用到你的方法
- 如5和8,可能不是第一个参数
- 参数名称,与方法签名相同 (
Object toVerify
)
如果您的方法有多个参数,有些有注释,有些没有,还有其他组合,请小心 - 不确定它是否总是有效。