Hibernate Validator

使用spring validation完成数据后端校验-自定义校验的注解-判断是否为空

南笙酒味 提交于 2020-05-08 03:36:11
引入依赖 我们使用maven构建springboot应用来进行demo演示。 < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > </ dependencies > 我们只需要引入spring-boot-starter-web依赖即可,如果查看其子依赖,可以发现如下的依赖: < dependency > < groupId > org.hibernate </ groupId > < artifactId > hibernate-validator </ artifactId > </ dependency > < dependency > < groupId > com.fasterxml.jackson.core </ groupId > < artifactId > jackson-databind </ artifactId > </ dependency > 验证了我之前的描述,web模块使用了hibernate-validation,并且databind模块也提供了相应的数据绑定功能。 构建启动类 无需添加其他注解

接近8000字的Spring/SpringBoot常用注解总结!安排!

生来就可爱ヽ(ⅴ<●) 提交于 2020-05-01 14:18:03
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章。如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide: https://github.com/Snailclimb/JavaGuide 相关阅读: V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦! 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了! 整个目录如下,内容有点多: 为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。 因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽! 1. @SpringBootApplication 这里先单独拎出 @SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。 Guide 哥:这个注解是 Spring Boot 项目的基石,创建

接近8000字的Spring/SpringBoot常用注解总结!安排!

跟風遠走 提交于 2020-05-01 13:34:25
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章。如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide: https://github.com/Snailclimb/JavaGuide 相关阅读: V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦! 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了! 整个目录如下,内容有点多: 为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。 因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽! 1. @SpringBootApplication 这里先单独拎出 @SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。 Guide 哥:这个注解是 Spring Boot 项目的基石,创建

接近8000字的Spring/SpringBoot常用注解总结!安排!

扶醉桌前 提交于 2020-05-01 13:29:46
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章。如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide: https://github.com/Snailclimb/JavaGuide 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了! 整个目录如下,内容有点多: 为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。 因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽! 1. @SpringBootApplication 这里先单独拎出 @SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。 Guide 哥:这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。 @SpringBootApplication

硬核总结!接近8000字的Spring/SpringBoot常用注解总结!安排!

笑着哭i 提交于 2020-05-01 13:26:45
文章目录 0.前言 1. `@SpringBootApplication` 2. Spring Bean 相关 2.1. `@Autowired` 2.2. `Component`,`@Repository`,`@Service`, `@Controller` 2.3. `@RestController` 2.4. `@Scope` 2.5. `Configuration` 3. 处理常见的 HTTP 请求类型 3.1. GET 请求 3.2. POST 请求 3.3. PUT 请求 3.4. **DELETE 请求** 3.5. **PATCH 请求** 4. 前后端传值 4.1. `@PathVariable` 和 `@RequestParam` 4.2. `@RequestBody` 5. 读取配置信息 5.1. `@value`(常用) 5.2. `@ConfigurationProperties`(常用) 5.3. `PropertySource`(不常用) 6. 参数校验 6.1. 一些常用的字段验证的注解 6.2. 验证请求体(RequestBody) 6.3. 验证请求参数(Path Variables 和 Request Parameters) 7. 全局处理 Controller 层异常 8. JPA 相关 8.1. 创建表 8.2. 创建主键 8.3.

Hibernate Validation使用示例及讲解

淺唱寂寞╮ 提交于 2020-04-19 07:21:34
在项目开发过程中,后台在很多场景都需要进行校验操作,比如:前台表单提交到后台,系统接口调用,数据传输等等。而且很多项目都采用MVC分层式设计,每层还有需要进行相应地校验,这样在项目较大,多人协作开发的时候,会造成大量重复校验代码,且出错率高。 针对这个问题, JCP 出台一个 JSR 303-Bean Validation规范 ,而Hibernate Validator 作为Bean Validation的参考实现,提供了JSR 303规范中所有内置constraint的实现,除此之外还有一些附加的constraint。 Hibernate Validation的使用非常简单,只用在相应的实体类中加上注解,再调用对应的校验API方法即可。 Hibernate Validation目前最新的稳定版本是:5.1.3。 下载地址 官网地址 官方英文使用手册 官方中文使用手册地址 (中文版目前最新的是4.3版本) 具体使用方法请查看上面的官方使用手册地址,每个注解对应的含义在官方手册2.4章节有详细介绍,内容太多我就不贴过来了。 下面直接上最常用情况(实体类校验)的示例代码。 一、依赖包 J2SE环境下除了需要引入Hibernate Validation包外,还需要额外引入两个实现表达式语言的包。J2EE环境如果容器提供不需要再引入。下面是J2SE环境下的依赖包: Xml代码

如何在Spring Boot项目使用参数校验

泄露秘密 提交于 2020-04-19 06:27:19
开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。 Bean Validation 1.0(JSR-303)是一个校验规范,在Spring Boot项目由于自带了Hibernate validator 5( http://hibernate.org/validator/ )实现,所以我们可以非常方便的使用这个特性 。 核心的pom依赖: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.3.1.Final</version> </dependency> 首先,需要我们声明一个Bean,注入校验器到Spring Boot的运行环境 @Configuration @EnableAutoConfiguration public class FactoryConfig { final static Logger logger= LoggerFactory.getLogger(FactoryConfig.class); @Bean public

SpringBoot 使用 JSR303 自定义校验注解

谁都会走 提交于 2020-04-09 12:31:55
JSR303 是 Java EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是hibernate Validator,有了它,我们可以在实体类的字段上标注不同的注解实现对数据的校验,不用 if-else 判断,简化了我们的开发,而且可读性也很好。 但有时候它提供的注解并不能满足我们的要求,比如,我们要求字段 color 必须是「red,blue,yellow」这三个值之一,这时候,我们就需要自己写判断的逻辑了,你可以自定义一个方法在其他地方进行判断,但既然用了 JSR303,为了统一代码,可以自定义校验注解。 1、给字段 color 上标注自定义注解 @ListValue ,写上这几个值 @ListValue(vals = {"red", "blue", "yellow"}) private String color; 2、创建注解 @ListValue ,可以参考官方的注解,比如 @NotNull ,我们只需要修改下面注释的几处即可 //自定义的约束校验器 @Constraint(validatedBy = {ListValueConstraintValidator.class}) @Documented @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}

使用Hibernate-Validation进行参数验证

自古美人都是妖i 提交于 2020-03-16 18:34:31
某厂面试归来,发现自己落伍了!>>> 在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用。 1.引入hibernate-validator依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.1.Final</version> </dependency> 2.在Model中定义要校验的字段 import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.NotEmpty; public class PayRequestDto { /** * 支付完成时间 **/ @NotEmpty(message="支付完成时间不能空") @Size(max=14,message="支付完成时间长度不能超过{max}位") private String payTime; /** * 状态 **/ @Pattern(regexp = "0

Spring Boot validator参数验证restful自定义错误码响应

◇◆丶佛笑我妖孽 提交于 2020-02-29 02:43:50
关于spring web应用中关于如何使用 Bean Validation API 和hibernate-validator的文章已经很多,本文就不再重复叙述,今天要介绍的重点是在SpringBoot restful服务中如何根据不同验证错误响应不同的自定义错误码。下面直接上代码。 一、定义restful统一结果返回 阿里java开发手册中定义的一段参考【“对于公司外的 http/api 开放接口必须使用“错误码”; 而应用内部推荐异常抛出;跨应用间 RPC 调用优先考虑使用 Result 方式,封装 isSuccess()方法、 “错误码”、 “错误简短信息”。】。因此这里也定义个返回结构。 public class CommonResult<T> implements Serializable { /** * serialVersionUID:. */ private static final long serialVersionUID = -7268040542410707954L; /** * 是否成功 */ private boolean success = false; /** * 返回信息 */ private String message; /** * 装在数据 */ private T data; /** * 错误代码 */ private String code