Spring Bootの設定ファイルを変更してもリスタートする必要なしで、どうやって有効にするのか?
Spring Bootでは、アプリケーションを再起動せずに、動的に設定ファイルを更新するために@RefreshScopeアノテーションを使用することができます。
以下は実行手順です。
- アプリケーションプロパティ
- アプリケーション.yml
- @値
- @リフレッシュスコープ
- アクチュエーターを更新する
たとえば、MyConfigという名前の設定クラスがあり、ダイナミックに更新する必要があるmy.propertyという設定項目があるとします。
@Configuration
@RefreshScope
public class MyConfig {
@Value("${my.property}")
private String myProperty;
// 省略其他代码...
}
application.propertiesファイルで、my.propertyとmanagement.endpoints.web.exposure.includeのプロパティを設定します。
my.property=Hello World
management.endpoints.web.exposure.include=*
その後、my.propertyの設定を変更した後、/actuator/refreshパスにPOSTリクエストを送信して、設定を更新することができます。
$ curl -X POST http://localhost:8080/actuator/refresh
この操作により、設定が動的にリフレッシュされ、変更した設定が再起動せずに有効になります。