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