我有一个POJO类,它在春季启动时从application.yaml文件读取属性。在这里,我需要根据主题值和另一个字符串的组合将默认值设置为groupId(在未给出时获取)。
private String topic;
@Value("${topic}_test")
private String groupId;
我尝试了此操作,但出现错误
无法解析值“ $ {topic} _test
”中的占位符“ topic”
我创建了一个变量,并尝试在@Value中访问它,但是失败了。 请提供访问此内容的任何建议
答案 0 :(得分:2)
假设您的application.yml文件中具有这样的属性
topic: myFavoriteTopic
如果Spring能够从application.yml用键groupId
加载属性,则下面的代码将为变量topic
赋值“ myFavoriteTopic”。如果不是,它将分配默认值“我的默认主题”。
@Value("${topic:my default topic}")
private String groupId;
要将null
设置为默认值,请使用:
@Value("${topic:#{null}}")
要将空字符串用作默认值,请使用:
@Value("${topic:}")
在代码段中,您有一个String topic
变量。对于Spring框架,在属性值检索中不使用此变量。当您执行@Value("${topic}")
时,“ topic”是Spring将在application.yml中寻找的键的名称。无法在运行时根据Java变量的值确定键的名称。原因是可以在执行类代码之前加载属性。
还要在代码段中使用@Value("${topic}_test")
。在这种情况下,Spring要做的是将“ _test”连接到为属性键主题检索的值。在我的第一个示例中,将groupId
分配为“ myFavoriteTopic_test”。