网站正在建设页面,百度官网认证网站,安徽网站设计,要建设网站jsr303 springSpring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中#xff0c;我们将看到如何使用此功能。 建立 首先#xff0c;我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持#xff1a; Configuration publi… jsr303 spring 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.htmljsr303 spring