我有spring boot应用程序,我想在运行时监视application.properties中的更改。例如我有属性名称:
name = John,测试
我正在使用它:
@Value("${name}")
String name;
当我启动我的应用程序时,它会打印John和Test,现在,如果我在运行时添加另一个名称,我也想打印该名称。
我知道可以使用Refresh Scope来完成,但我不想使用/ refresh端点来刷新它。我想在不发送请求的情况下做到这一点。
还有其他解决方法吗?
答案 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。