java - 在运行时观察 application.properties 的变化 Spring boot

标签 java spring-boot

我有 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/

相关文章:

java - 具有文件传输 JAVA 套接字的客户端/服务器聊天应用程序

spring-boot - @Autowire 结合 @InjectMocks

java - 如何以 ISO 格式返回 Date 对象而不是 Java 中的时间戳?

spring-boot - 如何在用于任意方法名称的@Timed 注释中包含方法参数

java - Spring Boot 在测试中不 Autowiring 类

java - 无法POST,HttpURLConnection默认为GET

java - 非商业用途的库依赖兼容性

java - 在日志或报告中嵌入方法的内容

java - 列表列表列表

java - Spring Boot Primitive Rest Controller 返回 Whitelabel 错误页面