平時開發,基本上不改變的常數我們都放在了配置項裡,如properties或yml檔案裡,這個時候為了只在啟動時候進行載入。如何做呢?
我們透過springboot的 @ConfigurationProperties 註解和static靜態化對應屬性進行。
但如果操作不當,會導致載入的資料為空,至於為什麼,看下面的案例。
//错误1:get\set都是静态方法 @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public static Integer getPreview() { return preview; } public static void setPreview(Integer preview) { MobileConfig.preview = preview; } }
//错误2:跟第一种差不多,只是用了lombok注解代替了get\set方法,get\set也都是静态方法 @Data @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; }
@Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public static Integer getPreview() { return preview; } public void setPreview(Integer preview) { MobileConfig.preview = preview; } }
@Data @Component @ConfigurationProperties(prefix = "mobile") public class MobileConfig { public static Integer preview; public void setPreview(Integer preview) { MobileConfig.preview = preview; } }
spring在註入的時候,需要呼叫set 方法,如果這個方法是靜態方法,就沒法動態注入了,所以只需要把get方法加入static作為靜態方法即可,如果用了@Data,只需要重寫set方法即可。
以上是springboot怎麼靜態載入@configurationProperties的詳細內容。更多資訊請關注PHP中文網其他相關文章!