Micronaut-如何注入休眠验证器

时间:2019-04-30 10:23:44

标签: kotlin bean-validation micronaut

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

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

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

我想将Validator注入我的班级,调用它并自己处理结果。在春季,这很容易做到。不幸的是,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工厂。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以注入一个javax.validation.ValidatorFactory,它将委派给您在类路径上执行的任何实现。

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

答案 1 :(得分:0)

可以通过添加一个提供Validation bean的Factory来提供验证器,如下所示:

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

这会将必要的Validator bean添加到应用程序上下文中并使其可用。