1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Spring Boot 進行優(yōu)雅的字段校驗,寫得太好了!

        共 2872字,需瀏覽 6分鐘

         ·

        2021-10-22 12:55


        前段時間提交代碼審核,同事提了一個代碼規(guī)范缺陷:參數(shù)校驗應(yīng)該放在controller層。到底應(yīng)該如何做參數(shù)校驗?zāi)?/strong>

        Controller層 VS Service層

        去網(wǎng)上查閱了一些資料,一般推薦與業(yè)務(wù)無關(guān)的放在Controller層中進行校驗,而與業(yè)務(wù)有關(guān)的放在Service層中進行校驗。

        那么如何將參數(shù)校驗寫的優(yōu)雅美觀呢,如果都是if - else,就感覺代碼寫的很low,還好有輪子可以使用

        常用校驗工具類

        使用Hibernate Validate

        引入依賴


        ????org.hibernate
        ????hibernate-validator
        ????4.3.1.Final?

        常用注解說明

        使用姿勢

        Spring Boot 基礎(chǔ)就不介紹了,推薦下這個實戰(zhàn)教程:

        https://github.com/javastacks/spring-boot-best-practice

        需要搭配在Controller中搭配@Validated或@Valid注解一起使用,@Validated和@Valid注解區(qū)別不是很大,一般情況下任選一個即可,區(qū)別如下:

        雖然@Validated比@Valid更加強大,在@Valid之上提供了分組功能和驗證排序功能,不過在實際項目中一直沒有用到過

        Hibernate-validate框架中的注解是需要加在實體中一起使用的

        定義一個實體
        public?class?DataSetSaveVO?{
        ????//唯一標(biāo)識符為空
        ????@NotBlank(message?=?"user?uuid?is?empty")
        ????//用戶名稱只能是字母和數(shù)字
        ????@Pattern(regexp?=?"^[a-z0-9]+$",?message?=?"user?names?can?only?be?alphabetic?and?numeric")
        ????@Length(max?=?48,?message?=?"user?uuid?length?over?48?byte")
        ????private?String?userUuid;

        ????//數(shù)據(jù)集名稱只能是字母和數(shù)字
        ????@Pattern(regexp?=?"^[A-Za-z0-9]+$",?message?=?"data?set?names?can?only?be?letters?and?Numbers")
        ????//文件名稱過長
        ????@Length(max?=?48,?message?=?"file?name?too?long")
        ????//文件名稱為空
        ????@NotBlank(message?=?"file?name?is?empty")
        ????private?String?name;

        ????//數(shù)據(jù)集描述最多為256字節(jié)
        ????@Length(max?=?256,?message?=?"data?set?description?length?over?256?byte")
        ????//數(shù)據(jù)集描述為空
        ????@NotBlank(message?=?"data?set?description?is?null")
        ????private?String?description;
        }

        說明:message字段為不符合校驗規(guī)則時拋出的異常信息

        Controller層中的方法
        @PostMapping
        public?ResponseVO?createDataSet(@Valid?@RequestBody?DataSetSaveVO?dataSetVO)?{
        ????return?ResponseUtil.success(dataSetService.saveDataSet(dataSetVO));
        }

        說明:在校驗的實體DataSetSaveVO旁邊添加@Valid或@Validated注解

        使用commons-lang3

        引入依賴


        ????org.apache.commons
        ????commons-lang3
        ????3.4

        常用方法說明

        測試代碼

        //StringUtils.isEmpty
        System.out.println(StringUtils.isEmpty(""));??//true
        System.out.println(StringUtils.isEmpty("??"));??//false
        //StringUtils.isNotEmpty
        System.out.println(StringUtils.isNotEmpty(""));??//false
        ????????
        //StringUtils.isBlank
        System.out.println(StringUtils.isBlank(""));??//true
        System.out.println(StringUtils.isBlank("?"));??//true
        //StringUtils.isNotBlank
        System.out.println(StringUtils.isNotBlank("?"));??//false

        List?emptyList?=?new?ArrayList<>();
        List?nullList?=?null;
        List?notEmptyList?=?new?ArrayList<>();
        notEmptyList.add(1);

        //CollectionUtils.isEmpty
        System.out.println(CollectionUtils.isEmpty(emptyList));???//true
        System.out.println(CollectionUtils.isEmpty(nullList));???//true
        System.out.println(CollectionUtils.isEmpty(notEmptyList));???//false

        //CollectionUtils.isNotEmpty
        System.out.println(CollectionUtils.isNotEmpty(emptyList));???//false
        System.out.println(CollectionUtils.isNotEmpty(nullList));???//false
        System.out.println(CollectionUtils.isNotEmpty(notEmptyList));???//true
        來源:https://mp.weixin.qq.com/s/FBfM10XXqItBukeChUPang
        ——————END——————

        歡迎關(guān)注“Java引導(dǎo)者”,我們分享最有價值的Java的干貨文章,助力您成為有思想的Java開發(fā)工程師!

        瀏覽 40
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

          <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲无码黄色成人网站在线观看 | xxxxbdsmsexhd捆绑视频 | 自拍偷拍50页 | 免费观看3D成人A片 | 一区二区免费视频va | 黄色成人网站在线免费观看 | 美女毛片在线 | 午夜福利天堂 | hongkong在线观看一区 | 国产精品久久久久久久久懂色 |