springcloud bus中踩過的坑


使用springcloud bus來動態刷新配置的時候,按照教程一步步執行下來,最后執行config-clinet客戶端接口 /bus/refresh的完畢,發現返回的配置屬性值沒有變化,一開始以為是瀏覽器緩存的問題,清緩存啥的折騰了一遍,沒效果。各種百度,看到網上說的要加 @RefreshScope注解啥的,還要配置 

 management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

但是我發現這個是springboot 2.X之后的問題,我用的是springboot1.5x 為什么會出現問題呢,而且我用postman執行了/bus/refresh接口之后,能看到config-client服務下面打印出的日志,明顯能看到
Received remote refresh request. Keys refreshed [people.name, people.age] 確實已經獲取到刷新信息了,那為什么我請求接口還是沒有任何變化呢,后來嘗試加了
@RefreshScope注解之后,成功完成刷新。。。。

大概原因大概是這樣 :因為其他客戶接收到廣播后,會通過這個注解找屬性進行刷新值;歸根到底就是應用僅僅只是接收到廣播說“你該刷新了”,然后進行spring cloud的/refresh操作,然后通過@RefreshScope注解尋找對應屬性進行重新賦值

以上是我折騰了半天在某個評論中找到的解決辦法。。

@RefreshScope
@RestController
public class ConfigController {

@Value("${people.name}")
private String name;
@Value("${people.age}")
private Integer age;

@RequestMapping("/getPeople")
public String getPeople() {
return "姓名:"+this.name+" ; 年齡:"+age;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM