如何在 Spring 中的每个方法执行之前调用自定义验证

How to call custom validation before each method execution in Spring

我正在使用 jdk 8 创建一个 spring 网络应用程序,我的要求是

我想用 @isValid("bla-bla-bla") 注释每个 rest 暴露的方法 现在我想写一个通用的实用方法,它将验证 Httprequest 来到这个方法反对 "bla-bla-bla" 在注释中传递,失败时应该 return HTTP 403

我知道我可以使用 Aspect 做到这一点,我想知道是否有更好的方法来实现同样的目标。

非常感谢

你可以这样写你的自定义注解(这个场景可能不适合你,但我认为逻辑是一样的。);

@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, 
ElementType.CONSTRUCTOR, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { MyValidator.class })
public @interface MyValidationAnnotation {

/**
 * @return
 */
String message() default "Your value is not valid";

/**
 * @return
 */
Class<?>[] groups() default {};

/**
 * @return
 */
Class<? extends Payload>[] payload() default {};

}

public class MyValidator implements ConstraintValidator<MyValidationAnnotation, String> {
public void initialize(MyValidationAnnotation constraintAnnotation) {
}

public boolean isValid(String id, ConstraintValidatorContext context) {
    //write your logic here..
    return true;
}

}

最后在需要的地方使用@MyValidationAnnotation。