micronaut@refreshable未按预期工作

slwdgvem  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(233)

我正在尝试用领事配置设置micronaut服务。当服务启动时,它使用键值存储提供的值成功初始化bean的属性。但是,即使刷新是手动触发的,当值更改时也不会重新加载。这是豆子:

@Refreshable
public class ConfigBean {

  @Property(name = "welcome-message")
  private String message = "doe!";

  @PostConstruct
  public void init() {
    String text = this + "Scattered Clouds " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MMM/yy HH:mm.ss.SSS"));
    System.out.println(text + "\r\n" + this.message);
  }
}

下面是简单的控制器端点:

@Controller("/p")
public class Controller {

  @Inject
  ApplicationContext applicationContext;

  @Inject
  private ConfigBean config;

  @Get("/r")
  @Produces(MediaType.TEXT_PLAIN)
  public String refresh() {
    applicationContext.publishEvent(new RefreshEvent());
    return "Hello World";
  }

  @Get("/m")
  @Produces(MediaType.TEXT_PLAIN)
  public String message() {
    return config.getMessage();
  }
}

有了这个代码
值已成功从配置存储解析并在导航到时显示localhost:8080/p/m
当得到localhost:8080/p/r 有趣的是,对于手动刷新,会调用config bean的init()方法,但不会更新message属性中的值
需要什么来重新触发bean的更新?是否有一个隐式调用可以用来清除配置缓存以便再次获取它?
关于这方面的文档有点少(使用了2.2.0版),提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题