簡體   English   中英

如何在運行時刷新application.conf

[英]how to refresh application.conf at runtime

我通過設置環境變量來更新application.conf中的鍵值

play.http.secret.key=${?MY_SECRET_KEY}

但是它仍然加載先前的值。
系統重新引導后,更改生效。
有沒有一種方法可以在不重新啟動的情況下刷新配置文件?

AFAIK,沒有開箱即用的機制可以做這種事情。 事實證明,通過“ sbt run”命令啟動Play時,它將以Dev模式啟動,創建兩個ClassLoader,一個用於您的代碼,另一個用於不可變的代碼,例如庫,依賴項和框架代碼本身。 這樣做是為了提供熱部署功能,即殺死並重新加載第一個CL。 因為application.conf是在啟動時由Play加載的,所以我認為它是在固定的ClassLoader中加載的,因此無法重新加載。

請嘗試以下操作:

在名為sample1.conf的文件中給出:

a {
   b {
      c = 30
      d = ["Red", "Orange", "Green", "Blue"]
   }
}

如果要更改屬性,請確保先將其更改為系統屬性,然后調用無效緩存,然后再次加載。 這也是允許您在命令行上覆蓋的內容。

System.setProperty("a.b.c", "100")
ConfigFactory.invalidateCaches()
val config = ConfigFactory.load("sample1")
config.getDouble("a.b.c") should be (100.0)

不知道這是否適用於所有情況。 因此,它可能會或可能不會與您選擇的應用程序一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM