1.导入pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2在validation文件夹下创建StateValidation类
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import com.xzy.bigevent.anno.State;
/*
@param value 将来要校验的数据
@ context context in which the constraint is evaluated
@return 如果返回false,则校验不通过,,返回true,则校验通过。
*/
public class StateValidation implements ConstraintValidator<State, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
//提供校验规则
if(value == null){
return false;
}
if(value.equals("已发布") || value.equals("草稿")){
return true;
}
return false;
}
}
3.创建注解类
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.FIELD;
@Documented //元注解
@Target(FIELD) //元注解
@Retention(RetentionPolicy.RUNTIME) //元注解
//加入自定义的StateValidation类
@Constraint(
validatedBy = { StateValidation.class}
)
public @interface State {
String message() default "{jakarta.validation.constraints.NotEmpty.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
4.对article类的state属性使用该注解
5.方法的属性中中使用@Validationed开启校验
@PostMapping
public Result add(@RequestBody @Validated Article article){
articleService.add(article);
return Result.success();
}
6.使用postman工具查看结果