Spring Boot配置動態(tài)刷新教程

Spring Boot Config為配置提供了集中化的管理,所以當(dāng)配置改變的時候我們應(yīng)該能夠通知到所有的客戶端,那么這是如何做到的呢

Spring提供了@ConfigurationProperties注解,可以將配置屬性映射到一個JavaBean
而且Spring Boot為每個Client導(dǎo)出了一個/refresh的服務(wù),每當(dāng)調(diào)用這個服務(wù)的時候,被@ConfigurationProperties標(biāo)注的Bean就會刷新屬性值

我們繼續(xù)使用在http://www.itdecent.cn/p/6a231e40a075http://www.itdecent.cn/p/b7bcab472d1e中配置的項目

下面我們把message提出成為一個JavaBean

@ConfigurationProperties(prefix = "")
@Configuration
public class MessageConfig {

    private volatile String message;

    public String getMessage() {

        return message;
    }

    public void setMessage(String message) {

        this.message = message;
    }
}

@ConfigurationProperties注解可以配置前綴,如果message屬性改為test.message@ConfigurationProperties注解就可以寫為@ConfigurationProperties(prefix = "test")

bootstrap.properties文件中增加一行配置

management.security.enabled=false

這行配置可以免去調(diào)用/refresh時的權(quán)限驗證

RonnieController改成下面這樣

@RestController
class RonnieController {

    @Autowired
    MessageConfig messageConfig;

    @RequestMapping("/message")
    public String message() {

        return messageConfig.getMessage();
    }
}

重啟服務(wù),驗證是否能正常執(zhí)行,訪問http://localhost:8080/message,如果返回I'm a king,則沒有問題

然后我們修改ronnie.properties文件,在king后面加上er,變?yōu)?code>I'm a kinger,然后提交到git

curl -X POST http://localhost:8080/refresh刷新配置,注意要用POST請求,刷新成功后,再次訪問http://localhost:8080/message,此時返回I'm a kinger

ok,配置完畢

最后編輯于
?著作權(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)容