日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot - 优雅的实现【应用启动参数校验】

發布時間:2025/3/21 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot - 优雅的实现【应用启动参数校验】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 需求
  • 三部曲
    • Step1 Properties類搞上Validation相關配置
    • Step2 啟動測試
    • Step3 配上試試
  • 自定義校驗規則
    • Step1 搞接口實現
    • Step 2 搞屬性文件
    • Step 3 搞自定義校驗規則
    • Step 4 驗證一把
  • 源碼


需求

有個參數非常非常非常非常非常重要,如果未配置 或者 配置不正確, 不能啟動應用。

我們使用Spring提供的Java Validation功能來實現這個“牛逼”的需求


三部曲

Step1 Properties類搞上Validation相關配置

package com.artisan.startvalidator.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated;import javax.validation.constraints.NotEmpty;/*** @author 小工匠* @version 1.0* @mark: show me the code , change the world*/@Validated @Component @Data @ConfigurationProperties(prefix = "artisan") public class ArtisanConfigProperties {@NotEmpty(message = "必須配置[artisan.code]屬性")private String code;}

上面的配置就會校驗在application配置文件中有沒有配置artisan.code 。若沒有配置,項目啟動就會失敗,并拋出校驗異常。

溫馨小提示: 在使用配置文件校驗時,必須使用@configurationproperties注解,@value不支持該注解

Step2 啟動測試

Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'artisan' to com.artisan.startvalidator.config.ArtisanConfigProperties failed:Property: artisan.codeValue: nullReason: 必須配置[artisan.code]屬性

Step3 配上試試

隨便搞個測試

當然了,根據你的需求,你也可以用框架提供的其他注解

校驗規則規則說明
@Null限制只能為null
@NotNull限制必須不為null
@AssertFalse限制必須為false
@AssertTrue限制必須為true
@DecimalMax(value)限制必須為一個不大于指定值的數字
@DecimalMin(value)限制必須為一個不小于指定值的數字
@Digits(integer,fraction)限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction
@Future限制必須是一個將來的日期
@Max(value)限制必須為一個不大于指定值的數字
@Min(value)限制必須為一個不小于指定值的數字
@Past驗證注解的元素值(日期類型)比當前時間早
@Pattern(value)限制必須符合指定的正則表達式
@Size(max,min)限制字符長度必須在min到max之間
@NotEmpty驗證注解的元素值不為null且不為空(字符串長度不為0、集合大小不為0)
@NotBlank驗證注解的元素值不為空(不為null、去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應用于字符串且在比較時會去除字符串的空格
@Email驗證注解的元素值是Email,也可以通過正則表達式和flag指定自定義的email格式

自定義校驗規則

當上面這些注解都滿足不了你的時候…

那干脆自定義一個

Step1 搞接口實現

自定義校驗邏輯規則,實現org.springframework.validation.Validator

package com.artisan.startvalidator.validator;import com.artisan.startvalidator.config.ArtisanConfigProperties; import org.springframework.util.StringUtils; import org.springframework.validation.Errors; import org.springframework.validation.Validator;/*** @author 小工匠* @version 1.0* @mark: show me the code , change the world*/ public class ArtisanCustomConfigPropertiesValidator implements Validator {@Overridepublic boolean supports(Class<?> clazz) {// 父類.class.isAssignableFrom(子類.class)return ArtisanConfigProperties.class.isAssignableFrom(clazz);}@Overridepublic void validate(Object target, Errors errors) {ArtisanConfigProperties config = (ArtisanConfigProperties) target;if (StringUtils.isEmpty(config.getCode())) {errors.rejectValue("code", "artisan.code.empty", "[artisan.code] 屬性必須要在配置文件application.properties中配置");} else if (config.getCode().length() < 8) {errors.rejectValue("id", "artisan.code.short", "[artisan.code] 屬性的長度需要大于8");}} }

Step 2 搞屬性文件

使用自定義校驗規則就不需要在使用原生的@NotEmpty了, 刪除即可

Step 3 搞自定義校驗規則

注入自定義校驗規則, 寫個配置類,@Bean一把

package com.artisan.startvalidator.config;import com.artisan.startvalidator.validator.ArtisanCustomConfigPropertiesValidator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** @author 小工匠* @version 1.0* @mark: show me the code , change the world*/@Configuration public class AppConfiguration {/*** bean的方法名必須要 configurationPropertiesValidator,否則啟動的時候不會執行該校驗** @return*/@Beanpublic ArtisanCustomConfigPropertiesValidator configurationPropertiesValidator() {return new ArtisanCustomConfigPropertiesValidator();} }

bean的方法名必須要 configurationPropertiesValidator,否則不生效。

Step 4 驗證一把

改改application.properties 的 artisan.code

不配置試一下

可以看到錯誤信息就是自定義校驗的輸出


源碼

https://github.com/yangshangwei/boot2

總結

以上是生活随笔為你收集整理的SpringBoot - 优雅的实现【应用启动参数校验】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人久久激情 | 和黑帮大佬的365 | 日韩欧美亚洲一区 | 国产精品一区二区在线看 | 爱爱免费小视频 | 亚洲高潮 | 久久久极品| 免费99精品国产自在在线 | 日本精品一区在线 | 黄色大片日本 | 国产又粗又猛又黄又爽的视频 | 日本少妇xxxx软件 | 国产做爰免费观看 | 久久综合久久88 | 宅男噜噜噜66一区二区 | 成人手机在线免费视频 | 视频一区国产精品 | 91理论片 | 久草综合在线 | 91色影院| 五级黄高潮片90分钟视频 | h在线观看视频 | 亚洲色图 在线视频 | 欧美成人午夜精品免费 | 国产又粗又长又黄的视频 | 成人区人妻精品一区二区不卡视频 | 国产精品福利片 | www.av72| 永久免费54看片 | 乱码av| 成人av一级 | 女人18片毛片60分钟 | 精品一区在线看 | www国产精品视频 | 狠狠干婷婷| 一线毛片 | www.xxxxx日本| 老色批影视 | 国产 日韩 一区 | 日韩三级精品 | 国产高清不卡视频 | 97av视频在线 | se94se欧美 | 国产成人精品一区在线播放 | 男人午夜影院 | 91欧美视频 | 国产精品3 | 在线观看羞羞漫画 | 精品免费 | 瑟瑟视频在线免费观看 | 成年人网站免费观看 | 精品人妻少妇嫩草av无码 | 中文字幕丰满人伦在线 | 在线免费观看视频 | 97国产精品久久久 | 国产一区不卡在线 | 97精品在线观看 | 伊人久久爱 | 一区二区视频在线播放 | 欧美激情性生活 | 欧美一区二区三区免费视频 | 裸体男女树林做爰 | 色视频导航 | 久久夜色精品国产噜噜亚洲av | 夜夜操夜夜摸 | 欧美高清在线视频 | 青草青视频| 色翁荡息又大又硬又粗又爽 | 成人免费视屏 | 影院色原网站 | 成年人免费看黄色 | 成人av免费看 | 99久久这里只有精品 | 国产在线播放网站 | 四色网址 | 久久久九九九九 | 亚洲国产精品成人无久久精品 | 男女超爽视频免费播放 | 男人与雌宠物交h | 国产一级在线免费观看 | 黄页在线播放 | 性猛交xxxx乱大交3 | 500部大龄熟乱视频 亚洲乱码精品 | 亚洲成a人v欧美综合天堂麻豆 | 西方裸体在线观看 | 精品一区李梓熙捆绑 | 亚洲人掀裙打屁股网站 | 亚洲高清在线视频 | 亚洲色图在线观看视频 | 久久亚洲国产成人精品性色 | 少妇人禽zoz0伦视频 | 国产传媒一区 | 亚洲av电影一区二区 | 欧美黄色片网站 | 99热青青草 | 日韩精品视频免费 | 九色亚洲| 亚洲另类色综合网站 | 男女啪啪软件 |