欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

使用Spring和JSR 303进行方法参数验证

发布时间:2023/12/3 javascript 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用Spring和JSR 303进行方法参数验证 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中,我们将看到如何使用此功能。

设定

首先,我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持:

@Configuration public class MyConfiguration { @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); } }

验证方法参数

注册MethodValidationPostProcessor之后,我们可以通过添加@Validated批注来启用每个bean的方法参数验证。 现在,我们可以将Java Bean验证批注添加到方法参数中以执行验证。

@Service @Validated public class UserService { public User getUser( @NotBlank String uuid) { ... } }

在这里,我们添加了@NotBlank批注,以确保传递的uuid参数不为null或为空字符串。 每当传递无效的uuid时,都会引发ContraintViolationException。

除了简单的参数验证之外,我们还可以验证带有JSR 303注释的对象。

例如:

public class User { @NotBlank private String name; // getter + setter } @Service @Validated public class UserService { public void createUser( @Valid User user) { ... } }

通过添加@Valid(不是@Validated),我们将用户参数标记为验证。 然后将根据User类中定义的验证约束来验证传递的用户对象。 在此,名称字段不应为null或包含空字符串。

这是如何运作的?

我们注册的MethodValidationPostProcessor Bean是一个BeanPostProcessor,它检查每个Bean是否被@Validated注释。 如果是这样,它将添加一个AOP拦截器( MethodValidationInterceptor )来拦截方法调用并执行验证。 仅当验证成功时才调用实际的bean方法。

因为此功能依赖于AOP拦截器,所以它仅适用于spring bean。

与往常一样,您可以在GitHub上找到所示示例的源。

翻译自: https://www.javacodegeeks.com/2020/01/method-parameter-validation-with-spring-and-jsr-303.html

总结

以上是生活随笔为你收集整理的使用Spring和JSR 303进行方法参数验证的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。