【发布时间】:2019-11-11 00:18:10
【问题描述】:
感谢question,我想我了解了验证的工作原理。
至于 JPA,我们有一个名为 JSR-303 的规范来解释 Bean Validation 应该如何工作,然后我们也使用常用的 Hibernate Validator 或 Apache BVal 等实现。
我正在努力在我的代码的某些部分使用@Valid。我没有使用@Validated,因为我不需要组验证。
您可以找到一个演示项目的示例here
在PropertyExample 类中,您可以看到我标记了我的类以进行 bean 验证。
使用@Validated 时,一切都按预期工作,因为我违反了application.yml 文件中的约束。
当使用@Valid 而不是@Validated 时,似乎没有任何反应。我不明白为什么。
我也看到这些注释可以在 ElementType.PARAMETER 上使用,但是当我在构造函数初始化期间使用它们时,验证似乎也不会触发。
非常感谢您解释如何使用这些注释(尤其是@Valid)。
【问题讨论】:
-
您需要将
@Validated放置在每个 [Spring Boot 文档] (docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…) 的类型(类)上,以便在其注释的方法上触发验证,例如、@Valid或@Null。我还没有弄清楚为什么,因为@Validated只添加了组验证。也许这篇文章解释得更深入一点:stackoverflow.com/a/19426570/2187022
标签: java spring validation bean-validation