【问题标题】:Difference between @Value and @ConfigurationProperties?@Value 和 @ConfigurationProperties 之间的区别?
【发布时间】:2020-07-12 01:15:48
【问题描述】:

@Value 和@ConfigurationProperties 之间的区别? 我应该在哪种情况下使用@Value 或@ConfigurationProperties? @RefreshScope 会刷新两者的属性值吗?

【问题讨论】:

  • 值来自spring框架,配置属性来自boot。当调用 /refresh 时,会发生 2 件事,配置属性会被重新绑定,并且 RefreshScope 缓存会被清除。如果您需要在运行时更新属性,请先使用配置属性
  • @spencergibb 感谢您的快速回复。是否无法在运行时使用 RefreshScope 更新值注释属性的值?
  • 是的,但是刷新范围会创建 bean 的新实例,而不仅仅是刷新现有实例的值。
  • @spencergibb 如果你能把内部工作的来源分享给我看清楚就好了。

标签: microservices spring-cloud spring-cloud-config


【解决方案1】:

我对自己也有同样的疑问,我找到了一个具体的原因,以及为什么使用 ConfigurationProperties 而不是 Value 更好。

主要原因是代码中的某些文本可能会迫使您进行全文搜索以了解 Value 属性的使用位置。

你可以在这个轻量级的阅读中找到完整的解释:https://tuhrig.de/why-using-springs-value-annotation-is-bad/

【讨论】:

    【解决方案2】:

    代替多次使用@Value注解从属性文件中读取值。我们可以使用@configurationProperties一次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多