Hibernate Validator

validator 自动化校验

醉酒当歌 提交于 2021-02-11 13:30:48
温馨提示 请收藏再看。此文篇幅太长,你短时间看不完;此文干货太多,错过太可惜。 示例代码可以关注 逸飞兮 (公众号)回复 jy 获取。 收获 讲解详细:能让你掌握使用 hibernate-validator 及类似校验工具的各种使用姿势 内容全面:可以当做知识字典来查询 what 注意:hibernate-validator 与 持久层框架 hibernate 没有什么关系,hibernate-validator 是 hibernate 组织下的一个 开源项目 。 hibernate-validator 是 JSR 380(Bean Validation 2.0) 、 JSR 303(Bean Validation 1.0) 规范的实现。 JSR 380 - Bean Validation 2.0 定义了一个实体和方法验证的元数据模型和 API。 JavaEE(改名为:Jakarta EE)中制定了 validation 规范,即:javax.validation-api(现为 jakarta.validation-api,jar 包的名字改变,包里面的包名、类名未变,因此使用方式不变)包, spring-boot-starter-web 、 spring-boot-starter-webflux 包都已引入此依赖,直接使用即可。 有点类似于 slf4j 与 logback

Spring MVC----Validation(数据校验)

这一生的挚爱 提交于 2021-02-11 11:40:50
简化服务器验证 JSR-303 简介 JSR-303 是 JavaEE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator。 此实现与 Hibernate ORM 没有任何关系。JSR-303 用于对 Java Bean 中的字段的值进行验证。 Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中使用注解的方式对表单提交的数据方便地验证。 Spring 4.0 开始支持 Bean Validation 功能。 JSR-303 基本的校验规则 空检查 @Null 验证对象是否为 null @NotNull 验证对象是否不为 null , 无法查检长度为 0 的字符串 @NotBlank 检查约束字符串是不是 Null 还有被 Trim 的长度是否大于 0,只对字符串,且会去掉前后空格 @NotEmpty 检查约束元素是否为 NULL 或者是 EMPTY 布尔检查 @AssertTrue 验证 Boolean 对象是否为 true @AssertFalse 验证 Boolean 对象是否为 false 长度检查 @Size(min=, max=) 验证对象( Array , Collection , Map , String )长度是否在给定的范围之内 @Length(min=, max=)

Springboot国际化信息(i18n)解析

别来无恙 提交于 2021-02-08 07:37:56
国际化信息理解 国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language":"zh",通过Accept-Language对应值,服务器就可以决定使用哪一个区域的语言,找到相应的资源文件,格式化处理,然后返回给客户端。 MessageSource Spring 定义了 MessageSource 接口,用于访问国际化信息。 getMessage(String code, Object[] args, String defaultMessage, Locale locale) getMessage(String code, Object[] args, Locale locale) getMessage(MessageSourceResolvable resolvable, Locale locale) MessageSourceAutoConfiguration springboot提供了国际化信息自动配置类,配置类中注册了ResourceBundleMessageSource实现类。 1 @Configuration 2

当下最流行的后端框架

╄→尐↘猪︶ㄣ 提交于 2021-01-21 12:35:00
程序员日常开发,很需要一块适合自己适合项目的脚手架(快速开发平台),这也是我们团队准备解决这一痛点,开发了 xiaonuo系列 框架,虽说是开源平台同系列产品较多,从代码规范二次开发方面,我极力推荐使用小诺。 Vue前后分离登录界面 推荐理由: 模块化架构设计,层次清晰,业务层推荐写到单独模块,方便升级。 前后端分离架构,分离开发,分离部署,前后端互不影响。 前端技术采用vue + antdvPro + axios。 后端采用spring boot + mybatis-plus + hutool等,开源可靠。 基于spring security(jwt) + 用户UUID双重认证。 基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。 基于hibernate validator实现的校验框架,支持自定义校验注解。 提供Request-No的响应header快速定位线上异常问题。 在线用户可查,可在线踢人,同账号登录可同时在线,可单独在线(通过系统参数配置)。 支持前端 + 后端在线代码生成。 文件,短信,缓存,邮件等,利用接口封装,方便拓展。 文件默认使用本地文件,短信默认使用阿里云sms,缓存默认使用内存缓存。 用户管理 代码风格统统采用阿里巴巴规范进行开发,分包合理,升级方便 来源: oschina 链接: https://my.oschina.net/u/4355040

SSM框架启动报 org.apache.bval.jsr303.ConfigurationImpl.getDefaultParameterNameProvider

情到浓时终转凉″ 提交于 2021-01-21 08:13:33
今天在做项目,在启动的时候报了一个错。错误信息是org.apache.bval.jsr303.ConfigurationImpl.getDefaultParameterNameProvider。 原因:使用了bval-jsr303.jar这个jar包。而Spring4.0之后不再支持这个jar包了。出现了该错误。 解决办法:把bval-jsr303这个jar换成hibernate-validator。Maven依赖如下: 删除该依赖 <dependency> <groupId>org.apache.bval</groupId> <artifactId>bval-jsr303</artifactId> <version>0.5</version> </dependency> 添加此依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.4.Final</version> </dependency> 来源: oschina 链接: https://my.oschina.net/u/4276314/blog/3533093

Spring Boot :使用 validation 验证参数

大兔子大兔子 提交于 2021-01-02 22:59:06
一、简介   开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。   Bean Validation 1.0(JSR-303)是一个校验规范,在Spring Boot项目由于自带了Hibernate validator 5( http://hibernate.org/validator/ )实现,所以我们可以非常方便的使用这个特性 二、关键使用 1、添加包   hibernate-validator <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --> < dependency > < groupId > org.hibernate.validator </ groupId > < artifactId > hibernate-validator </ artifactId > < version > 6.0.2.Final </ version > </ dependency >   或者添加spring-boot-starter-validation <!-- https:/

五分钟带你了解Java是如何从容而优雅地实现接口数据校验

狂风中的少年 提交于 2020-12-11 01:53:42
本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过Spring MVC定义一个Controller层接口,并将接口请求或返回参数分别定义在一个Java实体类中,这样Spring MVC在接收到Http请求(POST/GET)后,就会自动将请求报文自动映射成一个Java对象。这样的代码通常是这样写的: @RestController public class OrderController { @Autowired private OrderService orderServiceImpl; @PostMapping("/createOrder") public CreateOrderBO validationTest(@Validated CreateOrderDTO createOrderDTO) { return orderServiceImpl.createOrder(createOrderDTO); } } 这样的代码相信大家并不陌生,但在后续的逻辑实现过程中却会遇到这样的问题:“在接收请求参数后如何实现报文对象数据值的合法性校验?”。一些同学也可能认为这并不是什么问题,因为具体某个参数字段是否为空、值的取值是否在约定范围、格式是否合法等等,在业务代码中校验就好了

springboot(11)使用SpringBoot validator进行数据验证

时光怂恿深爱的人放手 提交于 2020-11-24 19:25:40
简介:   数据验证是作为一个企业级项目架构上设计的最基础的模块,前辈们曾说过:界面上传递到后台的数据没有百分之百值得相信的!为什么这么说呢?往往我们在编写程序的时候都会感觉后台的验证无关紧要,这样就会给别人空子钻。我可以模拟前台发送的请求到后台地址,那么我如果发送一些涉及系统安全的代码到后台,后果一发不可收拾。接下来我们就来讲解下SpringBoot项目内如何对参数进行校验! 本章目标 在SpringBoot项目内完成参数后台数据校验。 SpringBoot的Web组件内部集成了hibernate-validator,所以我们这里并不需要额外的为验证再导入其他的包,接下来我们先来看看SpringBoot为我们提供了哪些验证。 一、项目构建   使用IntelliJ IDEA工具来构建一个SpringBoot项目,预先导入Web依赖 二、使用验证,书写实体类   我们接下来创建一个实体叫做DemoEntity,实体内添加几个测试字段并对每个字段都做出验证处理 public class DemoEntity implements Serializable { @NotBlank @Length(min = 2,max = 10) private String name; @Min(value = 1) private int age; @NotBlank @Email private

Spring @Valid

我与影子孤独终老i 提交于 2020-11-23 20:50:39
@Valid基本用法 强烈推荐如果要学习@Valid JSR303, 建议看这里的API Bean Validation规范 ! Controller控制器中在需要校验的实体类上添加 @Valid 即可使用JSR303校验(前提记得添加hibernate-validator相关jar,<mvc:annotation-driven/>); modelMap是为了将校验失败信息写回到request属性中返回给JSP页面展示 @RequestMapping("/demo2") public String test2(@Valid User user, BindingResult result, ModelMap modelMap){ System.out.println(user); List<FieldError> fieldErrors = result.getFieldErrors(); for (FieldError e:fieldErrors) { System.out.println(e.getDefaultMessage()); //验证不通过的信息 System.out.println(e.getField()); modelMap.addAttribute(e.getField(),e.getDefaultMessage()); } return "test"; }

自定义注解!绝对是程序员装逼的利器!!

一笑奈何 提交于 2020-11-22 13:56:17
△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 315 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 相信很多人对Java中的注解都很熟悉,比如我们经常会用到的一些如@Override、@Autowired、@Service等,这些都是JDK或者诸如Spring这类框架给我们提供的。 在以往的面试过程中,我发现,关于注解的知识很多程序员都仅仅停留在使用的层面上,很少有人知道注解是如何实现的,更别提使用自定义注解来解决实际问题了。 但是其实,我觉得一个好的程序员的标准就是懂得如何优化自己的代码,那在代码优化上面,如何精简代码,去掉重复代码就是一个至关重要的话题,在这个话题领域,自定义注解绝对可以算得上是一个大大的功臣。 所以, 在我看来,会使用自定义注解 ≈ 好的程序员。 那么,本文,就来介绍几个,作者在开发中实际用到的几个例子,向你介绍下如何使用注解来提升你代码的逼格。 基本知识 在Java中,注解分为两种,元注解和自定义注解。 很多人误以为自定义注解就是开发者自己定义的,而其它框架提供的不算,但是其实上面我们提到的那几个注解其实都是自定义注解。 关于"元"这个描述,在编程世界里面有都很多,比如"元注解"、"元数据"、"元类"、"元表"等等,这里的"元"其实都是从meta翻译过来的。 一般我们把