0

SpringBoot プロジェクトでhttp://immutables.github.ioを使用しています。クラスを検証するために Javax 検証アノテーションを追加しましたが、機能しませんでした。私はこのようにしようとしました:

@Value.Immutable
@JsonDeserialize(builder = UserSignUpRequest.Builder.class)
@JsonSerialize(as = UserSignUpRequest.class)
@JsonIgnoreProperties(ignoreUnknown = true)
@ImmutableJsonModel
interface AbstractUserSignUpRequest {
Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();

@Value.Parameter
@Pattern(regexp = RegexPatterns.PHONE_REGEX)
String phone();

@Value.Parameter
@NotBlank
String username();

@Value.Parameter
Optional<DeviceRegistrationRequest> device();

@Value.Check
default void check() {
Set<ConstraintViolation<AbstractUserSignUpRequest>> violations = VALIDATOR.validate(this);
if (!violations.isEmpty()) {
  throw new ConstraintViolationException(violations);
  }
 }
}

次のようなコントローラー本体で:

@PostMapping(
  value = "/sign-up",
  consumes = MediaType.APPLICATION_JSON_VALUE,
  produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<ResponseEntity<UserCreatedResponse>> signUp(
  @RequestBody Mono<@Valid UserSignUpRequest> request) {

return request
    .flatMap(authenticationService::signUp)
    .map(user -> ResponseEntity.status(CREATED).body(user));
}

私のコードは機能しませんでした。この方法でクラスを検証できませんでした。不変クラスに javax 検証アノテーションをどのように実装する必要がありますか?

4

0 に答える 0