您好,登錄后才能下訂單哦!
這篇文章主要介紹“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;
這樣就可以實現我們想要的效果,如下圖:
效果
校驗規則 | 規則說明 |
---|---|
@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,也可以通過正則表達式和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開發啟動時配置校驗的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。