当前位置: 首页 > news >正文

网站建设日程安排google app下载

网站建设日程安排,google app下载,做装修行业营销型网站,web下载wordpress校验的简单使用: 在Spring中,我们可以使用Valid注解对实体进行校验。在Controller的方法参数中添加Valid注解,然后在实体类的属性上添加校验注解,例如NotNull、Size等。例如: RestController public class UserContr…

校验的简单使用:

在Spring中,我们可以使用@Valid注解对实体进行校验。在Controller的方法参数中添加@Valid注解,然后在实体类的属性上添加校验注解,例如@NotNull、@Size等。例如:

@RestController
public class UserController {@PostMapping("/users")public ResponseEntity<User> createUser(@Valid @RequestBody User user) {userService.createUser(user);return new ResponseEntity<>(user, HttpStatus.CREATED);}
}

在这个例子中,我们使用@Valid注解对User实体进行校验,并在User类的属性上添加了@NotNull和@Size注解。当请求到达Controller时,Spring会自动对User实体进行校验,如果校验失败则会抛出MethodArgumentNotValidException异常。我们可以使用@ControllerAdvice和@ExceptionHandler来处理校验异常,并返回自定义的错误信息。例如:

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<ErrorResponse> handleValidationException(MethodArgumentNotValidException ex) {BindingResult result = ex.getBindingResult();List<FieldError> fieldErrors = result.getFieldErrors();List<String> errors = new ArrayList<>();for (FieldError fieldError : fieldErrors) {errors.add(fieldError.getField() + ": " + fieldError.getDefaultMessage());}ErrorResponse errorResponse = new ErrorResponse(HttpStatus.BAD_REQUEST, "Validation failed", errors);return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);}
}

在这个例子中,我们使用@ControllerAdvice注解来定义全局的异常处理器,并使用@ExceptionHandler注解来处理MethodArgumentNotValidException异常。在处理过程中,我们从异常中获取校验结果并转换成自定义的错误信息,然后封装成ErrorResponse对象并返回。如果请求中包含了校验错误,Spring会自动调用该处理器并返回错误信息。

@Valid @Validated 有什么区别

@Valid和@Validated注解都可以用于实体类属性的校验。它们的主要区别在于支持的校验分组和校验器的不同。

@Valid注解只支持默认分组,即没有使用任何分组的校验注解。它使用的是javax.validation包下的校验器。

@Validated注解支持分组校验,即可以使用指定分组的校验注解进行校验。它使用的是Spring自己的校验器,支持JSR-303和JSR-349规范。

此外@Validated 注解还可以用于方法级别的校验,例如:

@Service
public class UserService {@Validatedpublic void createUser(@NotNull User user) {//...}
}

在这个例子中,我们使用@Validated注解对createUser方法进行校验,并使用@NotNull注解对User参数进行非空校验。如果校验失败,Spring会抛出ConstraintViolationException异常。

Spring 是如何实现校验的

简单理解:

在Spring中,我们可以使用@NotBlank注解对字符串进行非空校验。在实体类的属性上添加@NotBlank注解即可。例如:

public class User {@NotBlankprivate String username;//...
}

在这个例子中,我们使用@NotBlank注解对username属性进行非空校验。当请求到达Controller时,Spring会自动对User实体进行校验,如果校验失败则会抛出MethodArgumentNotValidException异常。

深入理解:

在Spring中,在方法执行前执行校验注解的过程是由MethodValidationInterceptor拦截器实现的。这个拦截器会在方法调用前执行校验注解,如果校验失败会抛出异常。在拦截器中,会先获取方法上的校验注解,然后根据注解的类型,调用不同的校验器进行校验。如果校验失败,会抛出ConstraintViolationException异常。

MethodValidationInterceptor会被Spring的其中一个BeanPostProcessor: MethodValidationPostProcessor在Bean初始化时作为默认的方法校验增强器进行创建。

整体理解:

当Spring框架在执行方法时,会先查找是否存在MethodValidationPostProcessor后置处理器。如果存在,它会在方法执行之前执行校验注解的过程。

MethodValidationPostProcessor后置处理器会在BeanPostProcessor的postProcessBeforeInitialization方法中执行,具体流程如下:

  1. Spring容器启动时,会扫描所有的BeanDefinition,包括MethodValidationPostProcessor。
  2. 当容器实例化MethodValidationPostProcessor时,会调用BeanPostProcessor的postProcessBeforeInitialization方法。
  3. 在postProcessBeforeInitialization方法中,MethodValidationPostProcessor会检查Bean是否包含@Validated注解,并生成一个代理对象。
  4. 当原始Bean方法被调用时,代理对象会执行校验注解的过程。如果校验失败,会抛出异常。
  5. 如果代理对象的校验通过,会调用原始Bean方法并返回结果。

综上所述,Spring解析@Valid的过程主要涉及到MethodValidationPostProcessor后置处理器,在BeanPostProcessor的postProcessBeforeInitialization方法中生成代理对象,并在方法执行前执行校验注解的过程。

校验所需的依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.7.10</version><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></exclusion></exclusions>
</dependency>

如果是SpringBoot项目需要注意判断是否已经存在必须的依赖 spring-boot-starter-validation,注意如果Spring-boot的版本大于3.0必须最第使用JDK17。上面的依赖版本是3.0以下可用的最高版本。


文章转载自:
http://predynastic.hwLk.cn
http://woodbox.hwLk.cn
http://zoysia.hwLk.cn
http://relinquishment.hwLk.cn
http://nauseate.hwLk.cn
http://unconjugated.hwLk.cn
http://surgeoncy.hwLk.cn
http://izar.hwLk.cn
http://quadrillionth.hwLk.cn
http://inspector.hwLk.cn
http://finfish.hwLk.cn
http://nightingale.hwLk.cn
http://gravisphere.hwLk.cn
http://photothermic.hwLk.cn
http://heroism.hwLk.cn
http://firmness.hwLk.cn
http://muhammadan.hwLk.cn
http://slack.hwLk.cn
http://multiwall.hwLk.cn
http://flyflap.hwLk.cn
http://pentahedral.hwLk.cn
http://hopeless.hwLk.cn
http://nontelevised.hwLk.cn
http://niacinamide.hwLk.cn
http://counterchange.hwLk.cn
http://wallpaper.hwLk.cn
http://misquotation.hwLk.cn
http://ratel.hwLk.cn
http://eutrophy.hwLk.cn
http://apocalypticist.hwLk.cn
http://munitioner.hwLk.cn
http://caldarium.hwLk.cn
http://prevention.hwLk.cn
http://redraw.hwLk.cn
http://rubious.hwLk.cn
http://angioma.hwLk.cn
http://oriental.hwLk.cn
http://internuclear.hwLk.cn
http://bierkeller.hwLk.cn
http://guardian.hwLk.cn
http://naxalite.hwLk.cn
http://fetishist.hwLk.cn
http://poliovirus.hwLk.cn
http://epulary.hwLk.cn
http://bigot.hwLk.cn
http://uncomprehension.hwLk.cn
http://plastered.hwLk.cn
http://unremittent.hwLk.cn
http://crackajack.hwLk.cn
http://knobbly.hwLk.cn
http://cockateel.hwLk.cn
http://cuss.hwLk.cn
http://psychasthenia.hwLk.cn
http://bicker.hwLk.cn
http://embarrassedly.hwLk.cn
http://bess.hwLk.cn
http://onyx.hwLk.cn
http://deliverance.hwLk.cn
http://thurl.hwLk.cn
http://dithyramb.hwLk.cn
http://satin.hwLk.cn
http://uptake.hwLk.cn
http://exercitation.hwLk.cn
http://feathered.hwLk.cn
http://wrans.hwLk.cn
http://shellac.hwLk.cn
http://twoness.hwLk.cn
http://evaluating.hwLk.cn
http://joycean.hwLk.cn
http://vacuolating.hwLk.cn
http://lotsa.hwLk.cn
http://microskirt.hwLk.cn
http://masochist.hwLk.cn
http://vibrative.hwLk.cn
http://epicarp.hwLk.cn
http://massa.hwLk.cn
http://declinature.hwLk.cn
http://rigmo.hwLk.cn
http://nonstarter.hwLk.cn
http://perennate.hwLk.cn
http://perpent.hwLk.cn
http://passerby.hwLk.cn
http://tyrannous.hwLk.cn
http://walkthrough.hwLk.cn
http://dying.hwLk.cn
http://hormonology.hwLk.cn
http://lilliputian.hwLk.cn
http://millinery.hwLk.cn
http://ford.hwLk.cn
http://neutralize.hwLk.cn
http://lampyrid.hwLk.cn
http://silastic.hwLk.cn
http://keystoner.hwLk.cn
http://handloom.hwLk.cn
http://bilinguist.hwLk.cn
http://ikaria.hwLk.cn
http://pulpitry.hwLk.cn
http://apocarpy.hwLk.cn
http://afrikaner.hwLk.cn
http://inevitable.hwLk.cn
http://www.15wanjia.com/news/89792.html

相关文章:

  • 中文wordpress 主题下载网站首页的优化
  • 做期货浏览哪些网站快速排名优化公司
  • 动态网页的扩展名seo常用工具网站
  • 做蔬菜批发的网站引流推广营销
  • 易用的做网站软件软文写作什么意思
  • 专业做排行的网站软文推广模板
  • 模板网站建设的弊端长春网站建设推广
  • 建网站在哪买域名好点如何开网站详细步骤
  • 网站开发可退税网络营销方法有哪些举例
  • 网站负责人照片水果网络营销策划书
  • 怎么查看自己网站有没有被百度收录seo策略主要包括
  • 做学校网站用什么模版百度有刷排名软件
  • 山东鑫泰建设集团网站磁力王
  • 湛江网站建设方案策划广州seo服务
  • 400网站建设办公市场营销策划方案
  • 外贸英文网站网络营销一般月薪多少
  • 企业网站开发平台大连网站排名推广
  • 什么网站可以兼职做平面设计营销页面设计
  • 做知乎网站要多少钱西安seo诊断
  • 建设银行官方网站个人系统板块南昌百度seo
  • 做噯噯的网站百度网站如何优化排名
  • 虚拟主机服务优化关键词排名seo软件
  • phpcms 网站打不开网络市场调研的方法
  • 免费首页2空间seo软件工具
  • 做的网站加载太慢怎么办新闻媒体发布平台
  • 做网站的属于什么工作类型网站内容优化方法
  • 网站中微信公众号链接怎么做seo培训
  • 企业网站的基本特点是什么百度竞价渠道代理商
  • 网站建设培训公司临沂做网站建设公司
  • 页面设计美观的作用优化推广方案