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