我正在使用Spring Boot 1.5.2.RELEASE版本,其中包括'hibernate-validator'5.3.4.Final version。
我遇到的问题是我的ConstraintValidator实现类执行了两次。
我附上了源代码。
@RestController @Validated @FunctionalInterface公共接口 IBinRegistryApi {
/** * * @param lookupRequest * @param nonce * @return */ @PostMapping(value = "/xxx/yyy/zzz/XYZ", headers="Accept=application/json", produces= {MediaType.APPLICATION_JSON_VALUE}, consumes= {MediaType.APPLICATION_JSON_VALUE}) ResponseEntity getWalletByCard(NonceValid @RequestHeader(value = "X-Captcha-Nonce") String nonce); }
@Component @Validated @ Slf4j public class BinRegistryApiImpl 实现IBinRegistryApi { @覆盖 public ResponseEntity getWalletByCard(NonceValid @RequestHeader(value =“X-Captcha-Nonce”)String nonce){}
@Target({ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME) @Documented @Constraint(validatedBy = NonceValidator.class)public @interface NonceValid { String message()默认“Nonce无效”;
Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
public class NonceValidator实现ConstraintValidator {
@Override public void initialize(NonceValid constraintAnnotation) { // no initialization required } @Override public boolean isValid(String nonce, ConstraintValidatorContext context) { **// twice here** } }
有人遇到同样的问题吗?
注1 :我确实看到我的自定义验证器属于2个组,即IBinRegistryAPI和默认。这就是为什么它被执行两次我相信
注意2 :如果我将实施更改为Validator和Custom Group,则问题不会发生。
谢谢,