激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜免费网 | 成人免费福利 | 媚药按摩痉挛w中文字幕 | 日韩精品中文字幕在线观看 | 欧美一级做一级爱a做片性 91在线视频观看 | 依人在线视频 | 久久国产综合精品 | 毛片午夜 | 国av在线| 91免费在线 | 亚洲第五色综合网 | 欧美亚洲国产一区二区三区 | 久久影城 | 欧美一级黄色片免费观看 | 国产91丝袜在线播放 | 国内精品久久久久久2021浪潮 | 欧美精品亚洲人成在线观看 | 自拍偷拍999 | 免费观看欧美一级片 | 精品69人人人人 | 性大片性大片免费 | 国产精品美女久久久免费 | 天堂在线中文资源 | 精品一区二区在线播放 | 日本一区视频在线观看 | 91成人免费电影 | 久久亚洲综合色 | av成人免费观看 | 国产精品国产成人国产三级 | 久久美女色视频 | 久久精品亚洲欧美日韩精品中文字幕 | 在线免费日本 | 国产精品一区免费在线观看 | 91avsese| 亚洲va国产va | 大西瓜永久免费av在线 | 亚洲精久久 | 久久久日韩精品一区二区 | 成人在线观看小视频 | 国产成人在线一区 | xvideos korean|