Java自定义注解使用

  时间:2019-01-11
本文章向大家介绍Java自定义注解使用,主要包括Java自定义注解使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

需求:判断用户实体上面的password是否为空,如果不为空,数据库是否存在,如果存在则不让用户提交数据

 

1,创建自定义注解类

import com.tuogo.sephora.rb.system.validate.impl.OldPasswordConstraintValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {OldPasswordConstraintValidator.class})
public @interface SecUserOldPasswordValidity {

    String message() default "{com.mycompany.constraints.checkcase}";

    String value() default "";

    Class<?>[] groups() default {};

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

}

2,创建注解验证类

/** 判断旧密码是否正确 实时验证
 * @author zgx
 */
public class OldPasswordConstraintValidator implements ConstraintValidator<SecUserOldPasswordValidity, String> {

    private String validOldPassword;

    public OldPasswordConstraintValidator() {
    }

    /**
     * 可以在验证开始前调用注解里的方法,从而获取到一些注解里的参数
     *
     * @param secUserOldPasswordValidity
     */
    @Override
    public void initialize(SecUserOldPasswordValidity secUserOldPasswordValidity) {
        this.validOldPassword = secUserOldPasswordValidity.value();
    }


    /**
     * 真正的校验逻辑
     *
     * @param oldPwd
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(String oldPwd, ConstraintValidatorContext constraintValidatorContext) {
        // 当前前端传过来的请求参数是空串,或者没传的时候,不进行后续正则校验
        if ("".equals(oldPwd) || oldPwd == null) {
            return true;
        } else {
            boolean pwdIfValidity = SpringContextUtils.getBean(SecUserPwdAndEmailIsValidity.class).isSecUserPwdIfValidity(oldPwd);
            return pwdIfValidity;
        }
    }
}
  1. 这里使用 isSecUserPwdIfValidity()方法判断当前输入的旧密码与新密码是否正确

第三步,实体上使用注解

   

 

国际化信息为

profile.secuser.old.empty=Old Password is required

oldPwd.msg.error=The old password is different from the original one

 

最后进行效验:

如果什么都不输入,点击保存

     

 

如果输入的密码与数据库不匹配,点击save则

 

下面是hibernate_validator参考手册(英文版)

链接:https://pan.baidu.com/s/1fAviG076Iw28nW7k-iuhmA 提取码:kovy 
 

上一页 下一页

原文地址:http://www.manongjc.com/article/42904.html