Hibernate Validator 自定义校验型注解

本文介绍了一种自定义校验注解@MyConstraint的实现方法,该注解可以用于根据数据库查询或其他自定义逻辑来验证Java Bean的属性。文章详细展示了如何创建自定义注解、实现校验逻辑以及整合Spring Service进行实际校验。

目的:通过自定义校验型注释 实现@MyConstraint注解(根据数据库查询校验或其他自定义校验)

一、bean代码

public class User {
	
	private String id;
	
	@MyConstraint(message = "这是一个测试")
	@ApiModelProperty(value = "用户名")
	private String username;
	
	@NotBlank(message = "密码不能为空")
	private String password;
	
	@Past(message = "生日必须是过去的时间")
	private Date birthday;

二、自定义注解

@Target({ElementType.METHOD, ElementType.FIELD})  //注解的目标范围  方法,字段上
@Retention(RetentionPolicy.RUNTIME) //运行时
@Constraint(validatedBy = MyConstraintValidator.class)  //校验时执行的自定义类
public @interface MyConstraint {
	
	String message();

	Class<?>[] groups() default { };      //必须实现这三个方法

	Class<? extends Payload>[] payload() default { };

}

三、校验时执行时的自定义类

public class MyConstraintValidator implements ConstraintValidator<MyConstraint, Object> {  
//MyConstraint为自定义注解类  object为输入的参数类型
@Autowiredprivate HelloService helloService;@Overridepublic void initialize(MyConstraint constraintAnnotation) {System.out.println("my validator init"); //初始化方法}@Overridepublic boolean isValid(Object value, ConstraintValidatorContext context) {helloService.greeting("tom"); System.out.println(value); //value为校验时传入的值return true;}}

四、调用的service及其实现类


@Service
public class HelloServiceImpl implements HelloService {

	/* (non-Javadoc)
	 * @see com.imooc.service.HelloService#greeting(java.lang.String)
	 */
	@Override
	public String greeting(String name) {
		System.out.println("greeting");
		return "hello "+name;
	}

}
public interface HelloService {
	
	String greeting(String name);

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javafanwk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值