Как вызвать пользовательскую проверку перед каждым выполнением метода в Spring - PullRequest
0 голосов
/ 02 октября 2018

Я создаю весеннее веб-приложение с jdk 8, Мое требование:

Я хочу аннотировать каждый оставшийся доступный метод с помощью @isValid("bla-bla-bla") Теперь я хочу написать общий служебный метод, который будет проверять пришедший Httprequest.к этому методу против "bla-bla-bla", переданного в аннотации и при ошибке должен возвращаться HTTP 403

Я знаю, что могу сделать это с помощью Aspect, я хотел знать, есть ли лучший способ добиться того же.

Большое спасибо

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете написать свою пользовательскую аннотацию следующим образом (Этот сценарий может не подходить вам, но я думаю, что логика та же.);

@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 там, где вам это нужно.

...