首頁 > Java > java教程 > 主體

springboot怎麼靜態載入@configurationProperties

WBOY
發布: 2023-05-20 23:55:04
轉載
1682 人瀏覽過

平時開發,基本上不改變的常數我們都放在了配置項裡,如properties或yml檔案裡,這個時候為了只在啟動時候進行載入。如何做呢?

我們透過springboot的 @ConfigurationProperties 註解和static靜態化對應屬性進行。

但如果操作不當,會導致載入的資料為空,至於為什麼,看下面的案例。

1、錯誤案例

//错误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;
}
登入後複製

2、成功案例

@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;
    }
}
登入後複製

3、原因

spring在註入的時候,需要呼叫set 方法,如果這個方法是靜態方法,就沒法動態注入了,所以只需要把get方法加入static作為靜態方法即可,如果用了@Data,只需要重寫set方法即可。

以上是springboot怎麼靜態載入@configurationProperties的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板