@ConfigurationProperties與靜態(tài)加載配置文件

應(yīng)用場景

springboot日常開發(fā)中,會遇到靜態(tài)方法需要加載配置文件信息這樣的需求,
我們一般就會使用@Value注解和@ConfigurationProperties注解來加載配置的信息;

思路理清

<p>
1.@Value(需要配合@Component),該注解的執(zhí)行在java運行初始化的最后的,所以不符合使用條件,感興趣的 同學(xué)看看java初始化等博客.
2.@ConfigurationProperties,該注解初始化的時機是,凡是引用到該類的就會觸發(fā)該注解,所以他符合我們的使用要求.
例如使用@ConfigurationProperties,貼下錯誤的代碼,

@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
    private String host;

    private String port;
    
    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }
}

但是該類文件無法在static方法中使用,所以我們又會想到使用如下辦法,全部使用靜態(tài)變量,靜態(tài)方法,貼下錯誤的代碼

@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
    private static String host;
    
    private static String port;
    
    public static String getHost() {
        return host;
    }
    
    public static void setHost(String host) {
        RedisProperties.host = host;
    }
    
    public static String getPort() {
        return port;
    }
    
    public static void setPort(String port) {
        RedisProperties.port = port;
    }
}

貌似沒有問題了,但是項目運行后發(fā)現(xiàn),host、port都是 null;
這是因為@ConfigurationProperties只會調(diào)用 非靜態(tài)的set方法,所以我們稍微做一下改動,set方法都換成非靜態(tài)的就可以了,貼下正確的代碼:

@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {

    private static String host;

    private static int port;

    public static String getHost() {
        return host;
    }

    public void setHost(String host) {
        RedisProperties.host = host;
    }

    public static int getPort() {
        return port;
    }

    public void setPort(int port) {
        RedisProperties.port = port;
    }
}

如此一來,就完成了我們想要的功能,感謝各位小伙伴!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容