@Valid @CustomValidator внутри пружины @Service - PullRequest
0 голосов
/ 11 сентября 2018

Я использовал для проверки своих bean-компонентов внутри моей пружины @RestController, например:

@PostMapping("/documents")
@ResponseStatus(HttpStatus.CREATED)
fun create(@Valid @RequestBody document: DocumentCreate) {
    return documentService.create(document)
}

Даже если это кажется глупым, я хотел бы сейчас проверить мой bean-компонент в зависимости от логического свойства DocumentCreate, например:

@PostMapping("/documents")
@ResponseStatus(HttpStatus.CREATED)
fun create(@RequestBody document: DocumentCreate) {
    return when {
        document.needValidation -> documentService.createWithValidation(document),
        else -> documentService.createWithoutValidation(document)
    }
}

Я пытался переместить аннотацию @Valid в класс документа @Service, но он не запускает проверку.Как мне этого добиться?Возможно ли это?

Ответы [ 2 ]

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

для тех, кто интересуется, как это сделать с помощью аннотации. Аннотируйте свой класс обслуживания с помощью Spring's @Validated. После этого будет запущена проверка входного бина в вашем методе класса обслуживания, который украшен @Valid.

0 голосов
/ 12 сентября 2018

Я нашел решение, создав экземпляр компонента-валидатора:

import javax.validation.Validator
...
@Autowired
lateinit var validator: Validator

, и я использую его в своей функции создания:

@PostMapping("/documents")
@ResponseStatus(HttpStatus.CREATED)
fun create(@RequestBody document: DocumentCreate) {
    return when {
        document.needValidation -> {
            val errors = validator.validate(document)
            if (errors.isNotEmpty()) {
                throw ConstraintViolationException(errors)
            }
            documentService.create(document)
        }
        else -> documentService.create(document)
    }
}

Я не нашел способа сделать это саннотации в сервисном слое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...