一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot開發技巧啟動時配置校驗實現示例

SpringBoot開發技巧啟動時配置校驗實現示例

2022-03-03 11:06飄渺Jam Java教程

這篇文章主要為大家介紹了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開發技巧啟動時配置校驗實現示例

測試驗證結果

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

 

小結

通過配置Spring Boot啟動校驗功能,可以快速的識別參數配置的錯誤,避免在使用組件的時候才發現問題,可以減少排查問題的工作量,并且在我們封裝自定義的starter時可以有更好的體驗。

以上就是SpringBoot開發技巧啟動時配置校驗實現示例的詳細內容,更多關于SpringBoot啟動時配置校驗的資料請關注服務器之家其它相關文章!

原文鏈接:https://jianzh5.blog.csdn.net/article/details/108332727

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 调教全程肉动画片在线观看 | 欧美丝袜videohd | 跪在老师脚下吃丝袜脚 | 日韩一级片在线免费观看 | 小小水蜜桃视频高清在线播放 | 二次元美女互摸隐私互扒 | 亚洲a区视频| 色悠久久久久综合欧美99 | 国产一区二区在线观看美女 | 99色亚洲| sao虎在线精品永久在线 | 国产精品久久国产精品99 | 久久久久999 | 亚洲六月丁香六月婷婷色伊人 | 精品国产精品国产偷麻豆 | 无码人妻精品一区二区蜜桃在线看 | 高清视频免费 | 91国内精品线免费播放 | 成人亚洲欧美日韩中文字幕 | 国产精自产拍久久久久久 | 99在线视频免费 | 欧美侏儒xxx | 亚洲午夜精品久久久久 | 色哟哟哟在线精品观看视频 | 我的妹妹最近有点怪在线观看 | 男女刺激高清视频在线观看 | 欧美艳星kagneyiynn | 亚洲精品在看在线观看 | 国产农村一一级特黄毛片 | 东北老女人91p0rny | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 99久久精品免费看国产高清 | 免费免费啪视频在线观播放 | 精品无码久久久久久久久 | 免费免费啪视频在线观播放 | 好大好硬好紧太深了受不了 | 婷婷丁香色综合狠狠色 | 日韩毛片网 | 2022最新国产在线不卡a | free性俄罗斯护士 | 日韩精品成人a在线观看 |