91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot開發啟動時配置校驗的方法是什么

發布時間:2021-10-28 10:55:28 來源:億速云 閱讀:178 作者:iii 欄目:開發技術

這篇文章主要介紹“SpringBoot開發啟動時配置校驗的方法是什么”,在日常操作中,相信很多人在SpringBoot開發啟動時配置校驗的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringBoot開發啟動時配置校驗的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

概述

在項目開發過程中,某個功能需要依賴在配置文件中配置的參數。這時候就可能出現下面這種現象問題:

有時候經常出現項目啟動了,等到使用某個功能組件的時候出現異常,提示參數未配置或者bean注入失敗。

有沒有一種方法在項目啟動時就對參數進行校驗而不是在實際使用的時候再拋出提示呢?

答案就是使用Spring提供的Java Validation功能,簡單實用。

增加啟動校驗

只需要在我們創建的配置Properties類增加Validation相關配置即可

@Validated
@Data
@ConfigurationProperties(prefix = "app")
@Component
public class AppConfigProperties {
    @NotEmpty(message = "配置文件配置必須要配置[app.id]屬性")
    private String id;
}

上面的配置就會校驗我們在 application.yml中有沒有配置 app.id參數。如果在配置文件中沒有該配置,項目啟動就會失敗,并拋出校驗異常。

在使用配置文件校驗時,必須使用@configurationproperties注解,@value不支持該注解。

在需要使用app.id的時候注入配置類即可:

@Autowired
private AppConfigProperties appConfigProperties;

這樣就可以實現我們想要的效果,如下圖:

SpringBoot開發啟動時配置校驗的方法是什么 

效果

 校驗類型

校驗規則規則說明
@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格式

Validation 支持如下幾種校驗,可以滿足基本的業務邏輯,當然如果還是滿足不了你的業務邏輯,可以選擇定制校驗規則。

定制校驗邏輯

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

public class ConfigPropertiesValidator implements Validator {
    @Override
    public boolean supports(Class<?> aClass) {
        return AppConfigProperties.class.isAssignableFrom(aClass);
    }
     @Override
    public void validate(Object o, Errors errors) {
        AppConfigProperties config = (AppConfigProperties) o;
        if(StringUtils.isEmpty(config.getId())){
            errors.rejectValue("id", "app.id.empty", "[app.id] 屬性必須要在配置文件配置");
        }else if (config.getId().length() < 5) {
            errors.rejectValue("id", "app.id.short", "[app.id] 屬性的長度必須不能小于5");
        }
    }
}

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

@Validated
@Data
@ConfigurationProperties(prefix = "app")
@Component
public class AppConfigProperties {
//    @NotEmpty(message = "配置文件配置必須要配置[app.id]屬性")
    private String id;
}

注入自定義校驗規則

@Bean
public  ConfigPropertiesValidator configurationPropertiesValidator(){
  return new ConfigPropertiesValidator();
}

注意:這里bean的方法名必須要 configurationPropertiesValidator,否則啟動的時候不會執行該校驗

修改app.id配置,觀察啟動情況

SpringBoot開發啟動時配置校驗的方法是什么

測試驗證結果

錯誤信息即為我們自定義校驗的結果。

到此,關于“SpringBoot開發啟動時配置校驗的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特中旗| 山阴县| 长岛县| 县级市| 镇平县| 曲阜市| 响水县| 道真| 塔河县| 湘西| 武平县| 湖南省| 禄劝| 灵丘县| 招远市| 军事| 肃宁县| 洞头县| 剑阁县| 交口县| 崇仁县| 滦南县| 云和县| 郑州市| 衡阳县| 涟源市| 太康县| 甘泉县| 汾阳市| 海伦市| 钟祥市| 桂东县| 牙克石市| 女性| 文水县| 富阳市| 龙里县| 始兴县| 大港区| 白银市| 定襄县|