Spring Boot 通过注解实现数据校验的方法
一、依赖
<!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.3.3.RELEASE</version> </dependency>
二、实体类
@TableField("username") @NotBlank(message = "{user.name.notBlank}") private String username; @NotBlank(message = "{user.password.notBlank}") @TableField("password") private String password; @NotBlank(message = "{user.email.notBlank}") @Email(message = "{user.email.pattern}") @TableField("email") private String email;
三、配置
查看LocalValidationFactoryBean
类的源码,发现Spring Boot默认的ValidationMessagesSource
校验出错时的提示文件是在resources
文件夹下文件ValidationMessages.properties
ValidationMessages.properties
user.name.notBlank=用户名不能为空 user.password.notBlank=密码不能为空 user.email.notBlank=邮箱不能为空 user.email.pattern=邮箱格式不正确
四、Controller
/** * 添加用户 * * @param user 用户对象 * @return */ @PostMapping("/insert") public ResultVO<Object> insert(@Validated @RequestBody User user, BindingResult bindingResult) { if (bindingResult.hasErrors()) { List<ObjectError> allErrors = bindingResult.getAllErrors(); return ResultVOUtil.fail(allErrors.stream().map(ObjectError::getDefaultMessage).collect(Collectors.toList())); } userService.insert(user.doBuild()); return ResultVOUtil.success(); }
五、效果
到此这篇关于Spring Boot 通过注解实现数据校验的文章就介绍到这了,更多相关Spring Boot 数据校验内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
解决没有@RunWith 和 @SpringBootTest注解或失效问题
导入别人的项目 或者 自己想创建一个测试类 经常会遇见了这个问题没有@RunWith 和 @SpringBootTest注解或失效 网上搜了搜 全是我下面的第一个解决方案 第二个才是重点 解决方案 1 添加依赖 如果 你是springboot项目 pom文件中添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</
-
SpringBoot2.X Kotlin系列之数据校验和异常处理详解
在开发项目时,我们经常需要在前后端都校验用户提交的数据,判断提交的数据是否符合我们的标准,包括字符串长度,是否为数字,或者是否为手机号码等:这样做的目的主要是为了减少SQL注入攻击的风险以及脏数据的插入.提到数据校验我们通常还会提到异常处理,因为为了安全起见,后端出现的异常我们通常不希望直接抛到客户端,而是经过我们的处理之后再返回给客户端,这样做主要是提升系统安全性,另外就是给予用户友好的提示. 定义实体并加上校验注解 class StudentForm() { @NotBank(message
-
Spring Boot 数据校验@Valid+统一异常处理的实现
1.先在你需要校验的实体类上面加上所需要的注解 为了测试,我自己就简单写了.@NotNull 和 @NotBlank 不能为空 @Entity @Table(name = "User") @Data public class User implements Serializable { @Id @NotNull(message = "id不能为空") @GeneratedValue(strategy = GenerationType.IDENTITY) privat
-
SpringBoot服务端数据校验过程详解
这篇文章主要介绍了SpringBoot服务端数据校验过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证.为什么这么说呢?往往我们在编写程序的时候都会感觉后台的验证无关紧要,毕竟客户端已经做过验证了,后端没必要在浪费资源对数据进行验证了,但恰恰是这种思维最为容易
-
SpringBoot全局异常与数据校验的方法
异常处理是每个项目中都绕不开的话题,那么如何优雅的处理异常,是本文的话题.本文将结合SpringBoot框架一起和大家探讨下. 要思考的问题 在现在的前后端交互中,通常都规范了接口返回方式,如返回的接口状态(成功|失败)以及要返回的数据在那个字段取,或者说失败了以后提示信息从接口哪里返回,因此,如果想做全局异常,并且异常发生后能准确的返回给前端解析,那么需要异常发生时返回给前端的格式与正常失败场景的格式一致. 项目建立 利用idea 工具,很容易的搭建一个SpringBoot项目,要引入的mav
-
SpringBoot通过整合Dubbo解决@Reference注解问题
首先检查一下你的spring boot版本是多少? 如果是2.X 不用看了,spring boot 2.x 必定会出现这个问题, 改为 1.5.9 或其他1.x版本,目前生产环境建议使用1.x版本. <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9
-
Spring Boot 通过注解实现数据校验的方法
一.依赖 <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> &l
-
Spring boot通过切面,实现超灵活的注解式数据校验过程
目录 通过切面,实现超灵活的注解式数据校验 Spring MVC的校验方式 通过切面实现自己的注解式数据校验 Spring boot aop注解数据权限校验 注解类 AOP切面 使用 通过切面,实现超灵活的注解式数据校验 在企业系统的开发中,用户表单输入的场景是会经常遇见的,如何让数据校验脱离于业务代码逻辑,谁也不想在逻辑代码里对字段逐一判断.... Spring MVC的校验方式 在使用Spring MVC时的时候,直接使用hibernate-validator的注解,如下: public c
-
Spring Boot异步线程间数据传递的四种方式
目录 Spring Boot 自定义线程池实现异步开发 1. 手动设置 2. 线程池设置TaskDecorator 3. InheritableThreadLocal 4. TransmittableThreadLocal TransmittableThreadLocal原理 总结 Spring Boot 自定义线程池实现异步开发 Spring Boot 自定义线程池实现异步开发相信看过的都了解,但是在实际开发中需要在父子线程之间传递一些数据,比如用户信息,链路信息等等 比如用户登录信息使用Th
-
spring boot启动加载数据原理分析
实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求. 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现. 创建实现接口 CommandLineRunner 的类,通过@Component注解,就可以实现启动时加载数据项.使用@Order 注解来定义执行顺序. IndexStartupRunner.Java类: import org.springframework.boot.CommandLine
-
spring boot+自定义 AOP 实现全局校验的实例代码
最近公司重构项目,重构为最热的微服务框架 spring boot, 重构的时候遇到几个可以统一处理的问题,也是项目中经常遇到,列如:统一校验参数,统一捕获异常... 仅凭代码 去控制参数的校验,有时候是冗余的,但通过框架支持的 去控制参数的校验,是对于开发者很友好,先看下面的例子 @NotEmpty(message="手机号不能为空") @Size(min=11,max=11,message="手机号码长度不正确") @Pattern(regexp=StringUt
-
Spring Boot 利用注解方式整合 MyBatis
目录 前言 整合过程 新建 Spring Boot 项目 添加 pom 依赖 准备数据库 pojo 层 dao 层 service 层 controller 层 入口程序配置 网页测试 总结 前言 目前而言,国内大家使用最多的持久层框架可能还是 MyBatis 吧,那既然如此,更强大的 Spring Boot 遇上炽手可热的 MyBatis,又会擦出什么样的火花呢? 那本文就来看看,如何利用 SpringBoot 来整合 Mybatis. 如下图是总结的整合过程的大概流程,那接下来我们就来开始具
-
spring boot基于注解的声明式事务配置详解
事务配置 1.配置方式一 1)开启spring事务管理,在spring boot启动类添加注解@EnableTransactionManagement(proxyTargetClass = true):等同于xml配置方式的 <tx:annotation-driven />(注意:1项目中只需配置一次,2需要配置proxyTargetClass = true) 2)在项目中需要添加事务的类或方法上添加注解@Transactional(建议添加在方法上),一般使用默认属性即可,若要使用事务各属性
-
Spring Boot 条件注解详情
目录 一 @Conditional扩展注解 1.1 Bean作为条件 1.1.1 @ConditionalOnBean 1.1.2 @ConditionalOnMissingBean 1.1.3 @ConditionalOnSingleCandidate 1.2 类作为条件 1.2.1 @ConditionalOnClass 1.2.2 @ConditionalOnMissingClass 1.3 SpEL表达式作为条件 1.4 JAVA版本作为判断条件 1.5 配置属性作为判断条件 1.6 资
-
Spring Boot Web 静态文件缓存处理的方法
采用Spring Boot + Freemarker开发Web项目时,由于一些静态文件比较大,如果是在PC上访问影响不大,当在手机上访问时,特别是用流量访问时速度会慢很多,而且很耗流量. 通过对请求进行抓包,可以发现每次进入一个页面都需要加载静态文件,如果不差钱的公司可以将静态文件放在CDN上来加快访问速度,或者用Nginx来做静态文件的缓存. 今天给大家介绍一种其他的缓存优化方式,通过Spring的缓存机制来缓存静态文件,在Spring Boot中配置静态文件缓存只需要在配置文件中加入下面的配
-
Spring Boot 中密码加密的两种方法
先说一句:密码是无法解密的.大家也不要再问松哥微人事项目中的密码怎么解密了! 密码无法解密,还是为了确保系统安全.今天松哥就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全. 1.为什么要加密 2011 年 12 月 21 日,有人在网络上公开了一个包含 600 万个 CSDN 用户资料的数据库,数据全部为明文储存,包含用户名.密码以及注册邮箱.事件发生后 CSDN 在微博.官方网站等渠道发出了声明,解释说此数据库系 2009 年备份所用,因不明原因泄露,已经向警方报案,后又在
随机推荐
- 谈谈C# replace在正则表达式中的意义
- Go语言的GOPATH与工作目录详解
- 用vbs实现对文本文件中的项计数
- 轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
- struts2中通过json传值解决乱码问题的实现方法
- Unity3d获取系统时间
- 通过JAVASCRIPT读取ASP设定的COOKIE
- Android中的windowSoftInputMode属性详解
- shell(bash)下“time” 命令的输出详解
- ajax实现分页查询功能
- javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- jquery 插件学习(五)
- jQuery插件开发基础简单介绍
- Thinkphp 空操作、空控制器、命名空间(详解)
- Android实现炫酷的CheckBox效果
- MyBatis高级映射学习教程
- 经典的PHPer为什么被认为是草根?
- 实例讲解PHP设计模式编程中的简单工厂模式
- android短信管理器SmsManager实例详解
- Python with语句上下文管理器两种实现方法分析