多亏了这个问题,我想我理解了验证是如何工作的。
至于jpa,这里我们有一个名为jsr-303的规范,它解释了bean验证应该如何工作,然后我们还使用了常用的hibernate验证器或apachebval之类的实现。
我正在努力使用 @Valid
在我代码的某些部分。我没有使用 @Validated
因为我不需要组验证。
你可以在这里找到一个演示项目的例子
在 PropertyExample
类,您可以看到我标记了我的类以进行bean验证。
使用时 @Validated
,因为我违反了我的约束,所以一切都按预期进行 application.yml
文件。使用时 @Valid
结束 @Validated
,似乎什么都没发生。我不明白为什么。
我也看到那些注解可以用在 ElementType.PARAMETER
但是当我在构造函数初始化期间使用它们时,验证似乎也不会触发。
说明如何使用这些注解(尤其是 @Valid
)非常感谢。
1条答案
按热度按时间pdkcd3nj1#
它在使用validated时起作用,而在使用valid时不起作用,这仅仅是因为springboot需要使用validated对属性类进行注解(如果您希望对它们进行验证的话)。请参阅文档:
每当用spring的@validated注解对@configurationproperties类进行注解时,spring boot就会尝试验证这些类
[...]
您还可以通过注解@bean方法来触发验证,该方法使用@validated创建配置属性。
注意,它们不可能允许在类上使用valid属性,因为valid注解不适用于类。