摘要:配置參數(shù)啟動(dòng)時(shí)校驗(yàn)如果配置文件沒有相關(guān)的配置,那么啟動(dòng)時(shí)就會(huì)出現(xiàn)以下異常名字不能為空,請注意檢查,參考值為肥朝。肥朝小聲逼逼提高代碼穩(wěn)壯性,肥朝認(rèn)為最好的辦法就是提前預(yù)防。
配置參數(shù)啟動(dòng)時(shí)校驗(yàn)
如果配置文件沒有相關(guān)的配置,那么**啟動(dòng)時(shí)**就會(huì)出現(xiàn)以下異常:
Description: Binding to target com.toby.provide.ApplicationProperties@31da6b2e failed: Property: feichao.info.name Value: null Reason: 名字不能為空,請注意檢查,參考值為:肥朝。
肥朝小聲逼逼:提高代碼穩(wěn)壯性,肥朝認(rèn)為最好的辦法就是提前預(yù)防。實(shí)際項(xiàng)目中,我們在配置文件配置了各種參數(shù)。但是大家也知道,不同環(huán)境的配置參數(shù),是會(huì)不一樣的,難免會(huì)因?yàn)槿藶槭韬?,?dǎo)致某個(gè)環(huán)境的配置文件,少了一些關(guān)鍵參數(shù),光靠肉眼來檢查,必然是一個(gè)低效而又不可靠的方式。如果你不用該方式校驗(yàn),很容易在某個(gè)特殊的場景下,才觸發(fā)出坑。但是你采用這種方式,做了大量的啟動(dòng)時(shí)校驗(yàn),一旦參數(shù)不合法,項(xiàng)目啟動(dòng)都啟動(dòng)不了,做到了防范于未然!
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 }
時(shí),出現(xiàn)校驗(yà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); } }
輸出校驗(yàn)異常信息:
javax.validation.ConstraintViolationException
Dubbo
Dubbo官方文檔中已經(jīng)寫得非常詳細(xì),地址為:dubbo.apache.org/zh-cn/docs/…
參數(shù)驗(yàn)證功能是基于 JSR303 實(shí)現(xiàn)的,用戶只需標(biāo)識(shí) JSR303 標(biāo)準(zhǔn)的驗(yàn)證 annotation,并通過聲明 filter 來實(shí)現(xiàn)驗(yàn)證。
maven依賴
javax.validation validation-api 1.0.0.GA org.hibernate hibernate-validator 4.2.0.Final
示例
參數(shù)標(biāo)注示例
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) // 保存時(shí)不允許為空,更新時(shí)允許為空 ,表示不更新該字段 @Pattern(regexp = "^s*w+();
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7171.html
摘要:配置參數(shù)啟動(dòng)時(shí)校驗(yàn)如果配置文件沒有相關(guān)的配置,那么啟動(dòng)時(shí)就會(huì)出現(xiàn)以下異常名字不能為空,請注意檢查,參考值為肥朝。肥朝小聲逼逼提高代碼穩(wěn)壯性,肥朝認(rèn)為最好的辦法就是提前預(yù)防。 配置參數(shù)啟動(dòng)時(shí)校驗(yàn) showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09ee8f357e36); 如果配置文件沒有相關(guān)的配置,那么**啟動(dòng)時(shí)**就會(huì)出現(xiàn)以下異常: ...
摘要:以下知識(shí)點(diǎn)是前輩師兄總結(jié)基礎(chǔ)語義化標(biāo)簽引進(jìn)了一些新的標(biāo)簽,特別注意等,注意的標(biāo)題結(jié)構(gòu)理解瀏覽器解析的過程,理解的樹形結(jié)構(gòu),及相應(yīng)理解標(biāo)簽在各個(gè)瀏覽器上的默認(rèn)樣式代理樣式,理解中的重置樣式表的概念理解等功能性標(biāo)簽理解標(biāo)簽,理解文件提交過程推薦 以下知識(shí)點(diǎn)是前輩師兄總結(jié) 1、HTML/HTML5基礎(chǔ): 1.0、語義化H5標(biāo)簽1.1、H5引進(jìn)了一些新的標(biāo)簽,特別注意article...
摘要:以下知識(shí)點(diǎn)是前輩師兄總結(jié)基礎(chǔ)語義化標(biāo)簽引進(jìn)了一些新的標(biāo)簽,特別注意等,注意的標(biāo)題結(jié)構(gòu)理解瀏覽器解析的過程,理解的樹形結(jié)構(gòu),及相應(yīng)理解標(biāo)簽在各個(gè)瀏覽器上的默認(rèn)樣式代理樣式,理解中的重置樣式表的概念理解等功能性標(biāo)簽理解標(biāo)簽,理解文件提交過程推薦 以下知識(shí)點(diǎn)是前輩師兄總結(jié) 1、HTML/HTML5基礎(chǔ): 1.0、語義化H5標(biāo)簽1.1、H5引進(jìn)了一些新的標(biāo)簽,特別注意article...
摘要:目前,有三個(gè)明確的框架可供選擇。和在眾多開源框架中贏得了開發(fā)人員和公司的信任。雖然這三個(gè)框架有許多共同之處,但它們的受歡迎程度因行業(yè)而異。使用,這有助于在編碼時(shí)發(fā)現(xiàn)并糾正常見錯(cuò)誤。 人們首先注意到的是你的應(yīng)用程序的視覺吸引力。大多數(shù)用戶傾向于將界面設(shè)計(jì)與公司的信譽(yù)和專業(yè)能力聯(lián)系起來。這就是為什么選擇正確的前端技術(shù)對你的業(yè)務(wù)...
摘要:開場白作為一個(gè)技術(shù)團(tuán)隊(duì)的,你是如何保證成員的開發(fā)環(huán)境達(dá)到公司的標(biāo)準(zhǔn),或者是你定制的最低要求的如果你的回答是差不多就行了,有問題再說,那么,你已經(jīng)在給自己挖坑了。好的,成員們開始構(gòu)建你定制的開發(fā)環(huán)境了。 開場白 作為一個(gè)技術(shù)團(tuán)隊(duì)的Leader,你是如何保證成員的開發(fā)環(huán)境達(dá)到公司的標(biāo)準(zhǔn),或者是你定制的最低要求的?如果你的回答是:差不多就行了,有問題再說,那么,你已經(jīng)在給自己挖坑了。 同事A...
閱讀 740·2023-04-25 19:43
閱讀 3986·2021-11-30 14:52
閱讀 3816·2021-11-30 14:52
閱讀 3873·2021-11-29 11:00
閱讀 3808·2021-11-29 11:00
閱讀 3907·2021-11-29 11:00
閱讀 3584·2021-11-29 11:00
閱讀 6197·2021-11-29 11:00