1. 程式人生 > >SpringBoot @Value 設定預設值

SpringBoot @Value 設定預設值

SpringBoot如果我們使用了@Value來從配置檔案讀取值的話,那就要小心辣,如果配置檔案中沒有這個配置項,而我們沒有指定預設值的話,就會報錯:

Could not resolve placeholder 'xxx' in value "${aaa.bbb.ccc}"

所以我們可以採用賦預設值的方式來防止這個錯誤(當然這樣似乎又有了硬編碼的嫌疑,所以到底用不用,自己看需要做取捨吧):

@Value("${aaa.bbb.ccc:DefaultValue}")

在配置項的表示式後面加一個冒號和預設值就可以為@Value的變數指定預設值,當配置項沒有該項的時候,就會採用預設值而不是丟擲錯誤。

比如下面的寫法就為aaa.bbb.ccc的配置項指定了hello預設值

@Value("${aaa.bbb.ccc:hello}")

這個知識點有什麼用呢,除了可以避免報錯,還有它的應用場景:

想象下,如果有一個配置檔案,因為測試需要做特殊處理,特地加了一個配置項。但是這個配置項,在生產上,是不能出現的。你希望把這種特殊處理(比如繞開某段程式碼)做的可配置,不需要改動java程式碼,畢竟你應該不希望測試維護一個版本的程式碼,生產維護一個版本的程式碼。你就可以使用預設值,預設值就是生產的值,而測試環境配置檔案里加上這個配置項。上生產的時候,生產配置檔案裡並沒有這個配置項,因此會使用預設值而不會報錯,這就靈活多了。