我有 Spring Boot 应用程序,我想在运行时观察 application.properties 的变化。例如我有属性名称:
姓名 = 约翰,测试
我得到它:
@Value("${name}")
String name;
当我启动我的应用程序时,它会打印 John 和 Test,现在如果我在运行时添加另一个名称,我也想打印它。
我知道可以使用刷新范围来完成,但我不想使用/refresh 端点来刷新它。我想在不发送请求的情况下完成它。
还有其他解决办法吗?
最佳答案
JMX 技术可以帮助您,它允许远程连接到正在运行的 JVM 并访问其公开的功能。 Spring 为您提供了一个工具,即 @ManagedResoruce
和 @ManagedOperation
注释。
为了给你一个提示,你创建一个 bean:
@ManagedResource
public class NameUpdater {
@Value("$name")
private String name;
@ManagedOperation
public void updateName(String newName) {
this.name = name;
}
}
现在,当您启动应用程序时,您还可以运行Java Mission Control或VisualVM,它们是JDK中提供的工具。您应该看到正在运行的进程的 PID 并连接到它以便访问您的托管 bean。
关于java - 在运行时观察 application.properties 的变化 Spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57355028/