# gulimall **Repository Path**: daodai321/gulimall ## Basic Information - **Project Name**: gulimall - **Description**: 谷粒商城 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-27 - **Last Updated**: 2023-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1.参数校验 + 新建不同接口作为校验规则的标记 `AddGroup` `UpdateGroup` + 根据业务在实体类上做标记 ```java @NotBlank(message = "新增时品牌地址不能为空",groups = {AddGroup.class}) @URL(message = "logo地址必须是一个合法的url地址",groups = {AddGroup.class,UpdateGroup.class}) private String logo; ``` + 在方法参数上添加注解`@Validated`并指明校验参数使用的组别 ```java @RequestMapping("/update") public R update(@Validated(UpdateGroup.class) @RequestBody BrandEntity brand){ brandService.updateById(brand); return R.ok(); } ``` 2.自定义校验注解 + 新建自定义注解 ```java @Documented @Constraint(validatedBy = {ListValuesConstraintValidator.class}) // ListValuesConstraintValidator作为该注解的校验器 @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE}) @Retention(RetentionPolicy.RUNTIME) public @interface ListValues { // com.atguigu.common.valid.ListValues.message参考ValidationMessage.properties,在resources下新建ValidationMessage.properties String message() default "{com.atguigu.common.valid.ListValues.message}"; Class[] groups() default {}; Class[] payload() default {}; int[] vals() default {}; // 自定义的属性 } ``` + 新建自定义注解对应的校验器 ```java // ConstraintValidator中ListValues为校验注解, // Integer为该校验注解校验的参数数据类型 public class ListValuesConstraintValidator implements ConstraintValidator { Set set = new HashSet(); @Override public void initialize(ListValues constraintAnnotation) { int[] vals = constraintAnnotation.vals(); for (int val : vals) { set.add(val); } } @Override public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) { return set.contains(integer); } } ``` > springCache的使用