Tworzę Rest API za pomocą Spring Boot i używam Hibernate Validation do sprawdzania poprawności danych wejściowych.
Ale potrzebuję również innych rodzajów sprawdzania poprawności, na przykład gdy trzeba zaktualizować dane, jeśli identyfikator firmy nie istnieje, chcę zgłosić niestandardowy wyjątek.
Czy ta walidacja powinna znajdować się na warstwie usługowej czy kontrolującej?
Warstwa serwisowa:
public Company update(Company entity) {
if (entity.getId() == null || repository.findOne(entity.getId()) == null) {
throw new ResourceNotFoundException("can not update un existence data with id : "
+ entity.getId());
}
return repository.saveAndFlush(entity);
}
Warstwa kontrolera:
public HttpEntity<CompanyResource> update(@Valid @RequestBody Company companyRequest) {
Company company = companyService.getById(companyRequest.getId());
Precondition.checkDataFound(company,
"Can't not find data with id : " + companyRequest.getId());
// TODO : extract ignore properties to constant
BeanUtils.copyProperties(companyRequest, company, "createdBy", "createdDate",
"updatedBy", "updatedDate", "version", "markForDelete");
Company updatedCompany = companyService.update(company);
CompanyResource companyResource = companyAssembler.toResource(updatedCompany);
return new ResponseEntity<CompanyResource>(companyResource, HttpStatus.OK);
}