当前位置: 首页 > 知识库问答 >
问题:

在Spring中使用@Valid vs@验证

冯翔
2023-03-14

由于这个问题,我想我理解了验证是如何工作的。

至于JPA,这里我们有一个名为JSR-303的规范,解释了Bean验证应该如何工作,然后我们也使用了常用的Hibernate Validator或Apache BVal等实现。

我正在努力在我的代码的某些部分使用@Valid。我没有使用@Valated,因为我不需要组验证。

您可以在此处找到演示项目的示例

在PropertyExample类中,您可以看到我标记了我的类以进行bean验证。

使用已验证的@时,由于我违反了应用程序中的约束,所以一切正常。yml文件。当在已验证的代码上使用有效的代码时,似乎什么都没有发生。我不明白为什么。

我也看到这些注释可以在ElementType上使用。PARAMETER但是当我在构造函数初始化期间使用它们时,验证似乎也不会触发。

如能解释如何使用这些注释(尤其是有效的注释),将不胜感激。


共有1个答案

陆斌
2023-03-14

它在使用Validated时有效,而在使用Validate时无效,因为Spring Boot需要使用Validated对属性类进行注释,如果您希望对它们进行验证的话。请参阅文档:

Spring Boot尝试验证@ConfigurationProperties类,只要它们使用Spring的@Valated注释进行注释

[...]

您还可以通过注释用@Validated创建配置属性的@Bean方法来触发验证。

请注意,它们不可能允许在属性类上使用Valid,因为Valid注释不适用于类。

 类似资料:
  • 我将在Spring中使用DDD构建一个新应用程序。我将有一个REST适配器、一个JPA适配器和我的域模型。 我的问题是在哪里进行现场验证?假设我有一个REST方法来下订单,我应该在哪里验证请求中的订单数量是否大于0?在REST适配器的DTO中?或者在我的域实体中,因为验证应该是业务逻辑的一部分? 如果我在REST请求的DTO中进行验证,我就可以将验证检查添加到DTO的字段中,并在我的REST控制器

  • 我想用以下值从Ruby代码发送http请求: http://some_domain.com?key=value 我有这个Spring配置: Spring转换配置: 但我有一个错误: 你知道我如何解决这个问题吗?我可以在Spring以某种方式禁用这个CSRF检查吗?

  • 问题内容: 我在这里尝试了答案中的步骤:HibernateValidator,自定义ResourceBundleLocator和Spring 但是仍然只是作为输出而不是消息。 dispatcher-servlet.xml /WEB-INF/validationMessages.properties: 表格(上课地点) 这是怎么了 问题答案: 得到它了!:-) 我在我的计算机中添加了以下bean而不

  • 我正在构建一个Spring Boot应用程序,并试图为我将在服务层验证的一些DTO/实体实现自定义验证。基于Spring关于这个问题的文档,我认为一种方法是实现org。springframework。验证。验证程序界面。 作为一个最小、完整、可重复的示例,请考虑以下代码: Spring初始化引导项目 在src/main/java/com中添加了以下代码。实例使用验证: 如果我点击endpoint触

  • 实际上,我们正在开发一个应用程序,在Spring boot 1.5中,通过oauth2实现的Spring security完成身份验证和授权,现在我们有一个要求,在身份验证部分,拆分身份验证,并将身份验证部分转移到第三方,即SAML集成, 流程:登录- 如何在my spring security中仅使用userid授权用户,并生成自定义令牌(自定义任何spring security筛选器), 如何

  • 我正在使用GraphQL进行一个Spring启动项目。我使用的是Graphql-java工具和Graphql-sping-boot-starter。正如您在下面的java配置文件中看到的那样,我设法用Spring Security配置了安全性和会话管理。 现在“/graphql”路径是安全的(只能通过发送请求http头中的“基本http身份验证”或会话令牌()来访问它)。在任何GraphQL操作上