• Bean Validation


     数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致错误的发生。 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据。
        JSR 303 - Bean Validation - 为实体验证定义了元数据模型和API. 默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展. Bean Validation API 并不局限于应用程序的某一层或者哪种编程模型, 例如,如图所示, Bean Validation 可以被用在任何一层, 或者是像类似Swing的富客户端程序中。

    下面是一个非常简单的例子:

    Java代码 收藏代码
    1. import java.util.Set;  
    2. import javax.validation.ConstraintViolation;  
    3. import javax.validation.Validation;  
    4. import javax.validation.Validator;  
    5. import javax.validation.ValidatorFactory;  
    6. import javax.validation.constraints.Max;  
    7. import javax.validation.constraints.Min;  
    8. import javax.validation.constraints.NotNull;  
    9. import javax.validation.constraints.Size;  
    10. /**
    11.  * 用户实体类
    12.  * 验证规则如下:
    13.  * userId最小为1
    14.  * userName不为空
    15.  * userPwd非空,长度在6-20之间
    16.  * userAge的值在18-60之间
    17.  * @author tanlan
    18.  *
    19.  */
    20. publicclass User {  
    21. @Min(1)  
    22. privateint userId;  
    23. @NotNull(message = "用户名不能为空!")  
    24. @Size(min=1,message = "用户名不能为空!")  
    25. private String userName;  
    26. @NotNull
    27. @Size(min = 6, max = 20, message = "密码长度必须在6-20之间!")  
    28. private String userPwd;  
    29. @Min(value = 18, message = "年龄最小值必须是18")  
    30. @Max(value = 60, message = "年龄最大值必须是60")  
    31. privateint userAge;  
    32. public User() {  
    33.     }  
    34. public User(int userId, String userName, String userPwd, int userAge) {  
    35. this.userId = userId;  
    36. this.userName = userName;  
    37. this.userPwd = userPwd;  
    38. this.userAge = userAge;  
    39.     }  
    40. publicint getUserId() {  
    41. return userId;  
    42.     }  
    43. publicvoid setUserId(int userId) {  
    44. this.userId = userId;  
    45.     }  
    46. public String getUserName() {  
    47. return userName;  
    48.     }  
    49. publicvoid setUserName(String userName) {  
    50. this.userName = userName;  
    51.     }  
    52. public String getUserPwd() {  
    53. return userPwd;  
    54.     }  
    55. publicvoid setUserPwd(String userPwd) {  
    56. this.userPwd = userPwd;  
    57.     }  
    58. publicint getUserAge() {  
    59. return userAge;  
    60.     }  
    61. publicvoid setUserAge(int userAge) {  
    62. this.userAge = userAge;  
    63.     }  
    64. publicstaticvoid main(String[] args) {  
    65.         ValidatorFactory factory = Validation.buildDefaultValidatorFactory();  
    66.         Validator validator = factory.getValidator();  
    67.         User user = new User(1"tanlan""123"10);  
    68.         Set > constraintViolations = validator  
    69.                 .validate(user);  
    70. for (ConstraintViolation  constraintViolation : constraintViolations) {  
    71.             System.out.println(constraintViolation.getMessage());  
    72.         }  
    73.     }  
    74. }  

     需要用到的包:

        hibernate-validator-4.2.0.Final.jar
        validation-api-1.0.0.GA.jar
        slf4j-api-1.6.1.jar

    上面的代码运行后的结果是:

       密码长度必须在6-20之间!
       年龄最小值必须是18

  • 相关阅读:
    gateone DSM 8271
    手机
    epub- https://www.taoshudang.com/
    [outlook] [vba] Highlight text in body of incoming emails
    HDMI ARC功能详解及应用介绍
    蓝光播放机
    surfingkeys
    亿格瑞A5-hdmi故障了
    解决VS无法连接到已配置的开发web服务器或者部署在IIS上的web服务打不开的问题
    解决远程连接mysql很慢的方法
  • 原文地址:https://www.cnblogs.com/haore147/p/5215831.html
Copyright © 2020-2023  润新知