簡體   English   中英

@ConfigurationProperties和無法解析的屬性

[英]@ConfigurationProperties and unresolvable properties

假設以下配置Bean:

@ConfigurationProperties(prefix="foo")
private class FooProperties {
   private String mystring;
   private int myint;
}

和以下application.properties

foo.mystring = ${bar.mystring}
foo.myint    = ${bar.myint}

請注意,這兩個屬性是不可解析的,因為未定義任何以bar開頭的屬性。 將會發生以下情況:

  • foo.mystring設置為字符串"${bar.mystring}" (無分辨率)
  • foo.myint將導致轉換錯誤,因為字符串"${bar.myint}"無法轉換為有效的整數。

相反,我希望在這種情況下拋出一種無法解析的屬性異常。 就像如果我使用@Value("${foo.mystring}")會發生什么一樣。

這是預期的行為嗎? 在這種情況下,是否有辦法使SpringBoot拋出此類異常?

相反,我希望在這種情況下拋出一種無法解析的屬性異常。

foo.myint不會拋出Unresolvable Property exception因為它已通過${bar.myint}了解析,但是當Spring嘗試將String轉換為int類型時,下一步將失敗,因為您存儲在Properties文件中的所有東西都是String值,除非您明確指定其類型,例如:

foo.myint = (java.lang.Integer)${bar.myint}

這是預期的行為嗎?

大概是。

在這種情況下,是否有辦法使SpringBoot拋出此類異常?

是的,對於Global級別,您可以使用@ControllerAdvice ;如果要在Controller級別使用它,則可以使用@ExceptionHandler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM