Spring Boot。如果使用 @Value,为什么会忽略 ConfigurationProperties 前缀

问题描述 投票:0回答:1

我有:

inner:
  system:
    number: "01"
    id: "ID"
@Configuration
@ConfigurationProperties(prefix = "inner.number")
@Slf4j(topic = "Configuration Properties Logger")
@Data
public class ConfigurationProperties {
  private String number;
  @Value("${inner.system.id})
  private String id;
}

并且所有内容均已正确加载。

但是如果我将

@Value("${inner.system.id})
更改为
@Value("${id})
(由于指定的前缀
"inner.number"
),它会失败。 我真的很困惑。

问题

这是正确的行为还是我的项目中配置不正确?

java spring-boot configuration
1个回答
0
投票

看起来配置有一个小错误。应该是,

@Configuration
@ConfigurationProperties(prefix = "inner.system")
....

@Value
注释需要完整的属性路径,包括前缀。在这种情况下,完整的属性路径是
inner.system.id
在您的情况下,正确的注释将是 @Value("${inner.system.id}") 因为完整路径是“inner.system.id。”

© www.soinside.com 2019 - 2024. All rights reserved.