Kotlin Micronaut-如何注入Hibernate验证程序

Kotlin Micronaut-如何注入Hibernate验证程序,kotlin,bean-validation,micronaut,Kotlin,Bean Validation,Micronaut,正如文档所示,我正在Micronaut项目中使用Hibernate验证机制 不幸的是,我需要手动对验证错误做出反应,并处理带有特定异常的错误。因此,我不能使用推荐的方法验证方法参数 fun doStuff(@Valid argument: MyArgument): ... {...} 我想将验证器注入到我的类中,调用它并自己处理结果。在春天,这是很容易做到的。不幸的是,Micronaut告诉我它不知道如何提供验证器: Message: No bean of type [javax.valida

正如文档所示,我正在Micronaut项目中使用Hibernate验证机制

不幸的是,我需要手动对验证错误做出反应,并处理带有特定异常的错误。因此,我不能使用推荐的方法验证方法参数

fun doStuff(@Valid argument: MyArgument): ... {...}
我想将验证器注入到我的类中,调用它并自己处理结果。在春天,这是很容易做到的。不幸的是,Micronaut告诉我它不知道如何提供验证器:

Message: No bean of type [javax.validation.Validator] exists
我的班级看起来像这样

import javax.validation.Validator

@Controller
class MyController(val validator: Validator) {...}
我错过什么了吗?我在某处读到,当我使用Micronaut v1.1.0时,应该有一个默认的验证bean工厂可用


谢谢。

您可以通过添加一个工厂来提供验证程序,该工厂提供如下验证bean:

@Factory
class ValidatorFactory {
    @Singleton
    fun validator(): Validator = Validation.buildDefaultValidatorFactory().validator
}
这将向应用程序上下文添加必要的验证器bean并使其可用。

您可以插入javax.validation.ValidatorFactory,它将委托给类路径上的任何实现

从尚未发布的1.2.0开始,您将能够注入io.micronaut.validation.validator.validator,这是micronaut不使用反射的验证实现