首页 > 解决方案 > 设置 @Value 以使用 @ConfigurationProperties 前缀

问题描述

我正在使用具有以下值的属性文件: com.abc.cpuUtilization.okThreshold = 0.5

我想使用以下配置类:

@Component
@ConfigurationProperties(prefix="com.abc")
public class SystemConfiguration{

  @Value("${cpuUtilization.okThreshold}")
  private Double cpuUtilizationOkThreshold;

  // getters and setters of cpuUtilizationOkThreshold
  }
}

但我得到一个例外Could not resolve placeholder 'cpuUtilization.okThreshold'

当设置@Value为:"${com.abc.cpuUtilization.okThreshold}"它可以工作,但它使代码看起来丑陋和繁琐。

有没有办法配置这个类,所以我不必为@Value注释写整个前缀?

标签: javaspringspring-boot

解决方案


正如 thepaoloboi 所说,@ConfigurationProperties(prefix="com.abc") 注释将允许您通过字段名称绑定字段。如果您指定前缀“com.abc”并且您有一个名为“cpuUtilization”的变量,则该变量的值将是“com.abc.cpuUtilization”属性的值。

@Value 注释获取具有完全相同名称的属性。@Value("${cpuUtilization.threshold}") 将获取具有该确切名称的属性。它不考虑前缀。


推荐阅读