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

参数校验学习笔记

springboot和dubbo项目注解进行参数校验

  • springboot项目注解进行参数校验
  • dubbo接口的注解参数校验

springboot项目注解进行参数校验

  • 参数是bean类型对象,在定义类时在字段上使用@NotNull等注解进行标记,然后在使用该对象作为参数的方法入口处使用@Valid来进行验证,如果controller类上加了@Validated注解,也要在参数前面加上@Validated或者@Valid注解,不然也不会起效;如下所示:
// bean对象定义
public class UserReq {
	@NotNull
	private String username;
	@NotBlank
	private String password;
}
// 在controller层使用参数校验
@RestController
@RequestMapping("/user")
public class UserControler {
	
	@PostMapping("/v1")
	// 这里也可以用@Validated替换@Valid注解
	// @Validated是springboot框架在@Valid基础上实现的注解
	// @Valid是java官方的注解
	public String login(@Valid @RequestBody UserReq userReq) {
		reutrn "";
	}
}
  • 参数是基本类型;一定要在类上加上@Validated才生效,否则在参数前面加@Validated或@Valid都不会生效;@Valid在类上不生效,不能放在类上
// 在controller层使用参数校验
@RestController
@RequestMapping("/user")
@Validated
public class UserControler {
	
	@PostMapping("/v1")
	// 
	public String login(@NotNull String ss) {
		reutrn "";
	}
}

dubbo接口的注解参数校验

  • bean类型的参数校验,与springboot类似,先要在bean类型的参数上使用@NotNull等进行标记,但是不需要@Valid就可以直接生效,但必须在暴露接口的配置中开启验证;如下所示:
public class UserReq{
	@NotNull
	private String name;
	@NotNull
	private String password;
}

public interface UserService {
	void save(UserReq user);
}

@Service
public class UserServiceImpl implements UserService {
	// 不需要加@Valid之类
	@Override
	public void save(UserReq user) {
		System.out.println("nihao");
	}

}

// Rpc.xml配置文件 一定要加上validation = true
<dubbo:service interface="com.xxx.service.UserService" ref="userServiceImpl" validation="true" />
  • 单个参数校验:需要将参数校验写在接口而不是实现类上,这是与Springboot的区别;如下所示:

public interface UserService {
	void get(@NotNull(message = "id不能为空") Long id);
}

@Service
public class UserServiceImpl implements UserService {
	// 不需要加@Valid之类
	@Override
	public void get(Long id) {
		System.out.println("nihao");
	}
}

// Rpc.xml配置文件 一定要加上validation = true
<dubbo:service interface="com.xxx.service.UserService" ref="userServiceImpl" validation="true" />

dubbo接口检验参考:
单个参数校验
参数校验

相关文章:

  • 快充协议方案 TYPE-C口取电支持PD5V、 9V、 12V、 15V、 20V
  • Unity3D DOTS中ECS核心架构详解
  • Windows上安装 nodejs,npm 和 yarn详细教程
  • 玩转云服务:Oracle Cloud甲骨文永久免费云主机配置指南(续)
  • python基础(13魔法方法介绍)
  • 江协科技STM32学习- P7 GPIO输入
  • 打造 LLMOps 时代 Prompt 数据驱动引擎
  • Java、python、php版 美发美甲预约服务平台 美容院管理系统(源码、调试、LW、开题、PPT)
  • Python相关系数导图
  • ChatGPT 3.5/4新手使用手册(附:案例)
  • 如何禁止电脑访问网站
  • 看论文文献用哪种阅读器比较好?
  • “决胜面试:高频题目与算法策略一览”
  • 机器学习 之 决策树与随机森林的实现
  • 知乎知+和信息流广告报价,知乎推广多少钱?
  • keil中内存的存储规律
  • 最新国内Docker 安装
  • 华为eNSP:静态路由配置、浮动路由配置
  • 搜维尔科技:利用 Xsens最大程度提高影视动画制作效率
  • POJO、PO、DTO、VO、BO到底是什么?都如何使用?(基础概念+传输示意图+示例代码)带你一次玩转层出不穷的Object
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 夜读丨跷脚牛肉乐翘脚
  • 神舟十九号载人飞船因东风着陆场气象原因推迟返回
  • 第二艘国产大型邮轮爱达·花城号完成坞内起浮
  • 国家发改委回应美加征关税:典型的单边主义霸凌做法
  • 上海“生育友好岗”已让4000余人受益,今年将推产假社保补贴政策