成都建站,贵州软件开发 网站开发,十大建筑设计公司,菏泽市建设局网站自定义注解
自定义注解 以实战案例为驱动,快速掌握此怎么自己自定义注解,也好出去自己吹牛逼~哈哈哈 假设我们打车,需要检验验证码,我们需要一个注解字来进行核验,我们怎么操作呢? 大纲总览
1.定义注解 可以自己创一个包单门存放自己的注解: 如constraints 包 然后…
自定义注解
自定义注解 以实战案例为驱动,快速掌握此怎么自己自定义注解,也好出去自己吹牛逼~哈哈哈 假设我们打车,需要检验验证码,我们需要一个注解字来进行核验,我们怎么操作呢? 大纲总览
1.定义注解 可以自己创一个包单门存放自己的注解: 如constraints 包 然后我们在此包下创建一个注解的接口 package com.boyunv.apipassenger.constraints;import javax.validation.Constraint;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/**description**author boyunv*create 2023/12/17 9:47*version 1.0*/
Target(ElementType.FIELD) //此注解表明我们定义的注解作用在属性上
Retention(RetentionPolicy.RUNTIME) //表明注解在运行时生效
Constraint(validatedBy VehicleTypeCheckValidator.class) //validatedBy: 声明你要校验的是哪个类 (这个关键字很重要)
public interface VehicleTypeCheck {/*** 车辆类型的选项(举例)* return*/String[] vehicleTypeValue() default{};/*** 提示信息* return*/String message() default 车辆类型不正确;}
2.解析注解 定义一个类: VehicleTypeCheckValidator.java 实现继承: ConstraintValidator package com.boyunv.apipassenger.constraints;
/**description* 解析注解*author boyunv*create 2023/12/17 9:55*version 1.0*/import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
import java.util.List;/*** ConstraintValidator: 必须继承的类* 实现的泛型: VehicleTypeCheck: 定义注解接口 String: 结果* */
public class VehicleTypeCheckValidator implements ConstraintValidatorVehicleTypeCheck,String {//定义一个集合接受注解中信息private ListString vehicleTypeCheckValuenull;Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {if(vehicleTypeCheckValue.contains(s)){return true ;}return false;}Overridepublic void initialize(VehicleTypeCheck constraintAnnotation) {//拿取传来的数组信息vehicleTypeCheckValue Arrays.asList(constraintAnnotation.vehicleTypeValue());ConstraintValidator.super.initialize(constraintAnnotation);}
}
3.使用注解 直接看下面的定义,这一步就很简单 package com.boyunv.apipassenger.request;
/**description* 使用注解*author boyunv*create 2023/12/17 10:04*version 1.0*/import com.boyunv.apipassenger.constraints.VehicleTypeCheck;import javax.validation.constraints.NotBlank;public class ForecastPriceDTO {NotBlank(message 车辆类型不正确)VehicleTypeCheck(vehicleTypeValue {1,2}) //这就是我们要往解析注解传的数组信息private String vehicleType;
}