在运行Spring时观看application.properties的更改

时间:2019-08-05 08:46:22

标签: java spring-boot

我有spring boot应用程序,我想在运行时监视application.properties中的更改。例如我有属性名称:

name = John,测试

我正在使用它:

  @Value("${name}")
  String name;

当我启动我的应用程序时,它会打印John和Test,现在,如果我在运行时添加另一个名称,我也想打印该名称。

我知道可以使用Refresh Scope来完成,但我不想使用/ refresh端点来刷新它。我想在不发送请求的情况下做到这一点。

还有其他解决方法吗?

1 个答案:

答案 0 :(得分:0)

可以帮助您的是JMX技术,该技术允许远程连接到正在运行的JVM并访问其公开的功能。 Spring为您提供了@ManagedResoruce@ManagedOperation批注的工具。

要给您一个提示,请创建一个bean:

@ManagedResource
public class NameUpdater {
  @Value("$name")
  private String name;

  @ManagedOperation
  public void updateName(String newName) {
    this.name = name;
  }
}

现在,在启动应用程序时,您还可以运行JDK中提供的工具Java Mission Control或VisualVM。您应该看到正在运行的进程的PID并连接到该进程,以便访问托管bean。