湖北高速公路建设网站推广平台
springboot和dubbo项目注解进行参数校验
- springboot项目注解进行参数校验
- dubbo接口的注解参数校验
springboot项目注解进行参数校验
- 参数是bean类型对象,在定义类时在字段上使用@NotNull等注解进行标记,然后在使用该对象作为参数的方法入口处使用@Valid来进行验证,如果controller类上加了@Validated注解,也要在参数前面加上@Validated或者@Valid注解,不然也不会起效;如下所示:
// bean对象定义
public class UserReq {@NotNullprivate String username;@NotBlankprivate 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{@NotNullprivate String name;@NotNullprivate String password;
}public interface UserService {void save(UserReq user);
}@Service
public class UserServiceImpl implements UserService {// 不需要加@Valid之类@Overridepublic 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之类@Overridepublic void get(Long id) {System.out.println("nihao");}
}// Rpc.xml配置文件 一定要加上validation = true
<dubbo:service interface="com.xxx.service.UserService" ref="userServiceImpl" validation="true" />
dubbo接口检验参考:
单个参数校验
参数校验