Я пытаюсь проверить следующую схему с помощью Spring Validator:
@RestController
@RequestMapping("/bankcode-service")
@Validated
public class BankcodeController {
@Autowired
Delegator delegator;
@Autowired
Delegator delegator;
@Autowired
BankcodeRepository bankcodeRepository;
@DeleteMapping(path = "/bankcode", consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public DeferredResult<ResponseEntity<String>> lock(@Valid HttpEntity<BankcodeJSONEntity> httpEntity) {
DeferredResult<ResponseEntity<String>> response = new DeferredResult<>();
if (httpEntity.getBody() == null) {
response.setResult(new ResponseEntity<>("The request was empty!", HttpStatus.BAD_REQUEST));
return response;
}
response.setResult(delegator.delegateUseCase(new LockBankcodeProd(bankcodeRepository, httpEntity.getBody())));
return response;
}
Используемый DTO выглядит так:
@Data
public class BankcodeJSONEntity {
@NotNull
@Size(min = 8, max = 8)
private String bankcode;
@NotNull
@Size(min = 11, max = 11)
private String bic;
@NotNull
private String ticket;
@Basic
@Temporal(TemporalType.DATE)
@NotNull
private Date date;
@NotNull
private String category;
@NotNull
private String name;
}
Но неважно, если я передам:
{"bankcode":"00000000", "bic":"AAAAAAAAAAA", "ticket":"SPOC-000000", "date":"2020-01-17", "category":"Fusion", "name":"Fantasiebank"}
Или недопустимый:
{"bankcode":"21750000", "bic":"AAAAAAAA", "ticket":"SPOC-000000", "date":"2020-01-17", "category":"Fusion", "name":"Fantasiebank"}
Нет исключения исключения ограничения. Во многих уроках я видел, что проверка в основном выполняется с помощью конкретных аргументов, а не DTO. Возможна ли проверка DTO, потому что у меня может быть только 7 аргументов конструктора до того, как SonarLint снизит качество моего кода.
Что я здесь не так делаю?