在application.yml中设置属性时,每个属性(包括列表)都将正确填充,否则,如果我创建新文件并通过 @PropertySource 定位目标,则列表为空,单个属性正确>
application.yml
name: test-YAML3
environment: test
servers:
- www.abc.test.com
- www.xyz.test.com
custom.yml
name: test-YAML2
environment: test
servers:
- www.abc.test.com
- www.xyz.test.com
@ConfigurationProperties
@Component
@ConfigurationProperties
@PropertySource( value = "classpath:application.yml")
//@PropertySource( value = "classpath:custom.yml")
@Validated
@Getter @Setter
public class ServerProperties
{
private String name;
private String environment;
private List<String> servers = new ArrayList();
}
下面显示填充列表,因为我使用了 application.yml
在下面显示缺少的列表,因为我设置了 custom.yml
有什么建议吗?我有什么想念的吗?谢谢
答案 0 :(得分:1)
@PropertySource
不支持YAML,因此您的YAML被作为属性文件读取。它在您使用application.yml
时起作用,不是因为您的@PropertySource
,而是因为默认情况下Spring Boot会读取application.yml
并且没有进一步的配置。
如果要使用application
以外的名称,则可以使用spring.config.name
进行更改。例如:
java -jar app.jar --spring.config.name=custom
reference documentation中提供了更多信息。