2015-10-29 29 views
-1

Application.yaml:值註釋無法找到一個值,如果它是一個數字

request.delay.ms: 200 

彈簧組件:

@Value("${request.delay.ms}") 
private long requestDelay; 

現在,奇怪的,因爲它聽起來,它看起來像Spring能如果它的值是一個字符串,則成功解析屬性,即,如果我將200更改爲200a。它的確會拋出一個錯誤 Caused by: java.lang.NumberFormatException: For input string: "200a"但這是預期的。

如果我更改值回200我得到 Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "${request.delay.ms}"

如果我在調試模式下運行Tomcat,並通過彈簧執行代碼,它工作正常,沒有錯誤。

字符串@Value(s)在同一個組件中一直處於良好狀態。

+0

請發佈一個最簡單,完整且可驗證的示例。 –

+0

Total guess:'request.delay.ms:「200」'? –

+0

這適合我。 –

回答

-1

如果您正在使用的YAML代替.properties你應該把它寫在下列方式:

request: 
    delay: 
    ms: 200 

,這將轉化爲性質:

request.delay.ms=200但你混合兩個文件

查看更多here

+0

這是如何解釋op'200a'的情況? –

+0

首先,這段代碼中有很多錯誤。主要問題是'$ {request.delay.ms}'永遠不會解析爲真正的值,但總是被解析爲將''{request.delay.ms}''賦值爲'String',並引發異常,因爲'' $ {request.delay.ms}「'不能轉換爲'long',並且如果他將'requestDelay'改爲'String',則不會引發異常,因爲'」$ {request.delay.ms}「'可以轉換爲'字符串'和'requestDelay'的值將會是''$ {request.delay.ms}「' –

+0

這沒有幫助。既不用'request_delay_ms'代替它' – Leo

相關問題