Микронавт - Как ввести валидатор Hibernate - PullRequest
0 голосов
/ 30 апреля 2019

Я использую механизм валидации Hibernate в моем проекте Micronaut, как следует из документации.

К сожалению, мне нужно реагировать на ошибки валидации вручную и обрабатывать ошибки с конкретными исключениями.Таким образом, я не могу использовать рекомендованный способ проверки аргументов метода

fun doStuff(@Valid argument: MyArgument): ... {...}

Я хочу внедрить Валидатор в мой класс, вызвать его и обработать результаты самостоятельно.Весной это было легко выполнимо.Микронавт, к сожалению, говорит мне, что не знает, как предоставить валидатор:

Message: No bean of type [javax.validation.Validator] exists

Мой класс выглядит так

import javax.validation.Validator

@Controller
class MyController(val validator: Validator) {...}

Я что-то упустил?Я где-то читал, что должна быть фабрика bean-компонентов проверки по умолчанию, так как я использую Micronaut v1.1.0.

Спасибо.

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Вы можете внедрить javax.validation.ValidatorFactory, который будет делегировать любой реализации, которую вы имеете на пути к классам.

Начиная с версии 1.2.0 (еще не выпущено), вы сможете внедрить io.micronaut.validation.validator.Validator, который является реализацией проверки Micronaut, которая не использует отражение.

0 голосов
/ 30 апреля 2019

Можно предоставить валидатор, добавив Factory, которая предоставляет bean-компонент Validation, например:

@Factory
class ValidatorFactory {
    @Singleton
    fun validator(): Validator = Validation.buildDefaultValidatorFactory().validator
}

Это добавляет необходимый bean-компонент Validator в контекст приложения и делает его доступным.

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