我在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工厂。
谢谢。
答案 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添加到应用程序上下文中并使其可用。