参数校验学习笔记

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

springboot项目注解进行参数校验

  • 参数是bean类型对象,在定义类时在字段上使用@NotNull等注解进行标记,然后在使用该对象作为参数的方法入口处使用@Valid来进行验证,如果controller类上加了@Validated注解,也要在参数前面加上@Validated或者@Valid注解,不然也不会起效;如下所示:
java 复制代码
// 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在类上不生效,不能放在类上
java 复制代码
// 在controller层使用参数校验
@RestController
@RequestMapping("/user")
@Validated
public class UserControler {
	
	@PostMapping("/v1")
	// 
	public String login(@NotNull String ss) {
		reutrn "";
	}
}

dubbo接口的注解参数校验

  • bean类型的参数校验,与springboot类似,先要在bean类型的参数上使用@NotNull等进行标记,但是不需要@Valid就可以直接生效,但必须在暴露接口的配置中开启验证;如下所示:
java 复制代码
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的区别;如下所示:
java 复制代码
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接口检验参考:
单个参数校验
参数校验

相关推荐
SQL-First布道者21 小时前
全面解构传统持久层框架,拥抱真正的 SQL-First
java·数据库·spring boot·sql·spring·mybatis·spring jdbc
小蒜学长1 天前
vue旅游攻略网站(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端·旅游
凤山老林1 天前
轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新
java·spring boot·后端·规则引擎·liteflow
2601_953720821 天前
【计算机毕业设计】基于Vue与Spring Boot的高校兼职信息服务平台设计与实现
spring boot·后端·课程设计
evans在进步2 天前
Spring Boot 核心机制详解:可执行 JAR、CORS、静态资源与配置绑定
spring boot·后端·jar
Sayuanni%32 天前
SpringBoot 从注解到源码:核心知识点总结
java·spring boot·后端
m0_587383002 天前
社区家政系统开发实战:从需求分析到上线部署全指南
java·spring boot·spring·需求分析
凤山老林2 天前
动态 i18n 体系落地:Spring Boot 多租户热加载与前后端协同实践
java·spring boot·后端·i18n
【赫兹威客】浩哥2 天前
基于SpringBoot+Vue3的健身运动管理系统|WebSocket实时消息 健身房毕设项目
spring boot·websocket·课程设计
凤山老林2 天前
数据库读写分离与动态路由实战:Spring Boot + ShardingSphere-JDBC 生产配置
数据库·spring boot·后端·分库分表·sharding-jdbc