摘要:配置參數(shù)啟動時校驗如果配置文件沒有相關的配置,那么啟動時就會出現(xiàn)以下異常名字不能為空,請注意檢查,參考值為肥朝。肥朝小聲逼逼提高代碼穩(wěn)壯性,肥朝認為最好的辦法就是提前預防。
配置參數(shù)啟動時校驗
如果配置文件沒有相關的配置,那么**啟動時**就會出現(xiàn)以下異常:
Description: Binding to target com.toby.provide.ApplicationProperties@31da6b2e failed: Property: feichao.info.name Value: null Reason: 名字不能為空,請注意檢查,參考值為:肥朝。
肥朝小聲逼逼:提高代碼穩(wěn)壯性,肥朝認為最好的辦法就是提前預防。實際項目中,我們在配置文件配置了各種參數(shù)。但是大家也知道,不同環(huán)境的配置參數(shù),是會不一樣的,難免會因為人為疏忽,導致某個環(huán)境的配置文件,少了一些關鍵參數(shù),光靠肉眼來檢查,必然是一個低效而又不可靠的方式。如果你不用該方式校驗,很容易在某個特殊的場景下,才觸發(fā)出坑。但是你采用這種方式,做了大量的啟動時校驗,一旦參數(shù)不合法,項目啟動都啟動不了,做到了防范于未然!
Controller
HelloDTO
@Data public class HelloDTO { @NotBlank private String name; @Min(0) @Max(150) private int age; }
HelloController
@RestController public class HelloController { @RequestMapping("/controllerValid") public String controllerValid(@RequestBody @Valid HelloDTO helloDTO) { return "ok"; } }
請求參數(shù)為
{ "name":"肥朝", "age" : 151 }
時,出現(xiàn)校驗異常
org.springframework.web.bind.MethodArgumentNotValidException
Service
HelloDTO
@Data public class HelloDTO { @NotBlank private String name; @Min(0) @Max(150) private int age; }
AService
public interface AService { int insertUser(HelloDTO helloDTO); }
AServiceImpl
@Service public class AServiceImpl implements AService { @Autowired private BService bService; @Override public int insertUser(HelloDTO helloDTO) { return bService.insertUser(helloDTO); } }
BService
public interface BService { int insertUser(@Valid HelloDTO helloDTO); }
BServiceImpl
@Service @Slf4j @Validated public class BServiceImpl implements BService { @Override public int insertUser(HelloDTO helloDTO) { log.info("BService insertUser..."); return 0; } }
單元測試
@RunWith(SpringRunner.class) @SpringBootTest public class AserviceTest { @Autowired private BService bService; @Test public void testInsertUser() throws Exception { HelloDTO helloDTO = new HelloDTO(); bService.insertUser(helloDTO); } }
輸出校驗異常信息:
javax.validation.ConstraintViolationException
Dubbo
Dubbo官方文檔中已經(jīng)寫得非常詳細,地址為:dubbo.apache.org/zh-cn/docs/…
參數(shù)驗證功能是基于 JSR303 實現(xiàn)的,用戶只需標識 JSR303 標準的驗證 annotation,并通過聲明 filter 來實現(xiàn)驗證。
maven依賴
javax.validation validation-api 1.0.0.GA org.hibernate hibernate-validator 4.2.0.Final
示例
參數(shù)標注示例
import java.io.Serializable; import java.util.Date; import javax.validation.constraints.Future; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; public class ValidationParameter implements Serializable { private static final long serialVersionUID = 7158911668568000392L; @NotNull // 不允許為空 @Size(min = 1, max = 20) // 長度或大小范圍 private String name; @NotNull(groups = ValidationService.Save.class) // 保存時不允許為空,更新時允許為空 ,表示不更新該字段 @Pattern(regexp = "^s*w+(");
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/6675.html
摘要:配置參數(shù)啟動時校驗如果配置文件沒有相關的配置,那么啟動時就會出現(xiàn)以下異常名字不能為空,請注意檢查,參考值為肥朝。肥朝小聲逼逼提高代碼穩(wěn)壯性,肥朝認為最好的辦法就是提前預防。 配置參數(shù)啟動時校驗 showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09ee8f357e36); 如果配置文件沒有相關的配置,那么**啟動時**就會出現(xiàn)以下異常: ...
摘要:以下知識點是前輩師兄總結(jié)基礎語義化標簽引進了一些新的標簽,特別注意等,注意的標題結(jié)構理解瀏覽器解析的過程,理解的樹形結(jié)構,及相應理解標簽在各個瀏覽器上的默認樣式代理樣式,理解中的重置樣式表的概念理解等功能性標簽理解標簽,理解文件提交過程推薦 以下知識點是前輩師兄總結(jié) 1、HTML/HTML5基礎: 1.0、語義化H5標簽1.1、H5引進了一些新的標簽,特別注意article...
摘要:以下知識點是前輩師兄總結(jié)基礎語義化標簽引進了一些新的標簽,特別注意等,注意的標題結(jié)構理解瀏覽器解析的過程,理解的樹形結(jié)構,及相應理解標簽在各個瀏覽器上的默認樣式代理樣式,理解中的重置樣式表的概念理解等功能性標簽理解標簽,理解文件提交過程推薦 以下知識點是前輩師兄總結(jié) 1、HTML/HTML5基礎: 1.0、語義化H5標簽1.1、H5引進了一些新的標簽,特別注意article...
摘要:目前,有三個明確的框架可供選擇。和在眾多開源框架中贏得了開發(fā)人員和公司的信任。雖然這三個框架有許多共同之處,但它們的受歡迎程度因行業(yè)而異。使用,這有助于在編碼時發(fā)現(xiàn)并糾正常見錯誤。 人們首先注意到的是你的應用程序的視覺吸引力。大多數(shù)用戶傾向于將界面設計與公司的信譽和專業(yè)能力聯(lián)系起來。這就是為什么選擇正確的前端技術對你的業(yè)務...
摘要:開場白作為一個技術團隊的,你是如何保證成員的開發(fā)環(huán)境達到公司的標準,或者是你定制的最低要求的如果你的回答是差不多就行了,有問題再說,那么,你已經(jīng)在給自己挖坑了。好的,成員們開始構建你定制的開發(fā)環(huán)境了。 開場白 作為一個技術團隊的Leader,你是如何保證成員的開發(fā)環(huán)境達到公司的標準,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有問題再說,那么,你已經(jīng)在給自己挖坑了。 同事A...
閱讀 2760·2021-11-22 14:45
閱讀 906·2021-10-15 09:41
閱讀 1068·2021-09-27 13:35
閱讀 3689·2021-09-09 11:56
閱讀 2634·2019-08-30 13:03
閱讀 3199·2019-08-29 16:32
閱讀 3307·2019-08-26 13:49
閱讀 773·2019-08-26 10:35