中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

項目啟動時怎樣校驗SpringBoot配置參數

本篇文章給大家分享的是有關項目啟動時怎樣校驗Spring Boot配置參數,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

冀州網站制作公司哪家好,找成都創新互聯!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設等網站項目制作,到程序開發,運營維護。成都創新互聯于2013年創立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯

 

1. 概述

在項目實際開發過程中,為了更好的復用,我們參考Spring Boot Starters,封裝了許多企業內部中間件的starter。這些中間件的接入都需要申請并在項目中配置一些特定的參數。我們通過@ConfigurationProperties注解,增加了在配置過程的體驗,實現屬性提示。一些參數是在中間件使用過程中的必選參數,經常發現項目啟動了,調用中間件時拋出異常,提示某個參數沒有配置。

這樣的接入過程體驗很不好。

有沒有一種方式在項目啟動的時候就對配置的參數直接進行校驗,而不是等到實際使用的時候再拋出錯誤提示呢?

很幸運,Spring已經為我們提供的Java Validation可以解決我們的問題。

 

2. 增加啟動校驗

在我們創建的Properties類中增加Validation相關配置:

/**
* ConfigProperties.
*
* @author Wang Jianchao(tinyking)
* <p>
* Created on 2020/8/20
*/
@Validated
@Data
@ConfigurationProperties(prefix = "config")
public class ConfigProperties {
   @NotEmpty
   private String name;
}
 

@Validated是Spring提供的校驗注解,通過該注解告訴Spring這個類是需要進行校驗處理的。

@NotEmpty 是Java Validation API中提供的校驗注解,表示name字段不能為空。不能為空是指不能是null,也不能是空字符串。

配置Bean

@Configuration
@EnableConfigurationProperties(ConfigProperties.class)
public class ValidationConfiguration {

   @Bean
   public ConfigProperties configProperties() {
       return new ConfigProperties();
   }
}

 

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

***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'config' to io.github.tinyking.springvalidation.config.ConfigProperties failed:

   Property: config.name
   Value: null
   Reason: 不能為空

 

application.yml中,我們增加config.name等配置項,但是不給它設置內容:

config:
name:
 

再次啟動項目,發現錯誤信息發生了變化:

***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'config' to io.github.tinyking.springvalidation.config.ConfigProperties failed:

   Property: config.name
   Value:
   Origin: class path resource [application.yml]:2:8
   Reason: 不能為空


Action:

Update your application's configuration
   

3. 自定義校驗

Spring還支持我們進行自定義校驗規則,通過自定義校驗可以實現復雜的校驗邏輯。

我們創建一個校驗類,并實現Validator接口:

/**
* ConfigPropertiesValidator.
*
* @author Wang Jianchao(tinyking)
* <p>
* Created on 2020/8/20
*/
public class ConfigPropertiesValidator implements Validator {
   @Override
   public boolean supports(Class<?> aClass) {
       return ConfigProperties.class.isAssignableFrom(aClass);
   }

   @Override
   public void validate(Object target, Errors errors) {
       ConfigProperties config = (ConfigProperties) target;

       if (!StringUtils.isEmpty(config.getName()) && config.getName().length() < 5) {
           errors.rejectValue("name", "name.too.shot", "name is too shot");
       }
   }
}

 

需要注意的是,上面的Validator接口是Spring框架提供的,不是Java Validation API中的接口。

  • supports(Class<?> aClass)方法用來判斷是否支持當前正在進行校驗的實例
  • validate(Object target, Errors errors)方法中寫實際的校驗規則,并用     errors收集錯誤信息

接下來就是如何在Spring Boot啟動時,對Properties進行校驗了。這一步非常關鍵!

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

其中有兩個注意點:

  • 方法名必須為     configurationPropertiesValidator ,否則在啟動的時候不會執行該校驗
  • 方法必須聲明為     static, 告訴Spring,該Bean的創建要在所有的Configuration之前

我們修改在application.ymlconfig.name

config:
name: a
 

這樣,name長度就不能滿足我們自定義的校驗規則,啟動程序,查看結果:

***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'config' to io.github.tinyking.springvalidation.config.ConfigProperties failed:

   Property: config.name
   Value: a
   Origin: class path resource [application.yml]:2:9
   Reason: name is too shot


Action:

Update your application's configuration

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

通過配置Spring Boot啟動校驗功能,可以快速的識別參數配置的錯誤,使我們在開發過程中有更好starter集成體驗。

以上就是項目啟動時怎樣校驗Spring Boot配置參數,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創新互聯行業資訊頻道。

網站名稱:項目啟動時怎樣校驗SpringBoot配置參數
路徑分享:http://m.2m8n56k.cn/article26/jdcgjg.html

成都網站建設公司_創新互聯,為您提供自適應網站網頁設計公司域名注冊網站策劃虛擬主機ChatGPT

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 一级做a爱过程免费视 | 狠狠色狠狠色狠狠五月ady | 日韩毛片免费在线观看 | 色悠久久久久综合网伊人男男 | 亚洲国产资源 | 女人张开腿让男人捅的视频 | 一级片免费视频 | 新体操真| 国产一区免费在线观看 | 欧美人牲囗毛片 | 99在线观看视频免费 | 青青视频国产依人在线 | 九九视频免费精品视频免费 | 久久国产精品久久久久久久久久 | 国产欧美日韩视频在线观看 | 欧美一级性 | 久久香蕉国产线看免费 | 青青影院一区二区免费视频 | 欧美日韩一日韩一线不卡 | 91天仙tv嫩模福利 | 性欧美videos精品 | 国产精品v在线播放观看 | 国产成人在线影院 | a级毛片免费观看视频 | 亚洲最新在线视频 | 99久久国产免费 - 99久久国产免费 | 国产成人久久精品激情91 | www伊人| 色妇女影院 | 久草在线视频新时代视频 | 毛片激情永久免费 | 一区二区三区日韩 | 777444欧美影视 | 免费看欧美一级特黄a大片一 | 男女男免费视频网站国产 | 丝袜黄色片 | 中文在线日韩 | 欧美7777| 99精品免费在线观看 | 欧美性色一级在线观看 | 国产精品久久久久9999小说 |