首頁  >  文章  >  Java  >  springboot怎麼靜態載入@configurationProperties

springboot怎麼靜態載入@configurationProperties

WBOY
WBOY轉載
2023-05-20 23:55:041676瀏覽

平時開發,基本上不改變的常數我們都放在了配置項裡,如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刪除