Micronaut - 如何注入Hibernate验证器

问题描述 投票:0回答:2

正如文档所示,我在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) {...}

我错过了什么吗?我在某处读到应该有一个默认的验证bean工厂,因为我正在使用Micronaut v1.1.0。

谢谢。

kotlin bean-validation micronaut
2个回答
1
投票

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.