【发布时间】:2015-12-12 02:52:59
【问题描述】:
在我的 Spring Boot 应用程序中,我有 application.yaml 配置文件,其中包含以下内容。我想将其作为带有通道配置列表的配置对象注入:
available-payment-channels-list:
xyz: "123"
channelConfigurations:
-
name: "Company X"
companyBankAccount: "1000200030004000"
-
name: "Company Y"
companyBankAccount: "1000200030004000"
我想用 PaymentConfiguration 对象列表填充@Configuration 对象:
@ConfigurationProperties(prefix = "available-payment-channels-list")
@Configuration
@RefreshScope
public class AvailableChannelsConfiguration {
private String xyz;
private List<ChannelConfiguration> channelConfigurations;
public AvailableChannelsConfiguration(String xyz, List<ChannelConfiguration> channelConfigurations) {
this.xyz = xyz;
this.channelConfigurations = channelConfigurations;
}
public AvailableChannelsConfiguration() {
}
// getters, setters
@ConfigurationProperties(prefix = "available-payment-channels-list.channelConfigurations")
@Configuration
public static class ChannelConfiguration {
private String name;
private String companyBankAccount;
public ChannelConfiguration(String name, String companyBankAccount) {
this.name = name;
this.companyBankAccount = companyBankAccount;
}
public ChannelConfiguration() {
}
// getters, setters
}
}
我将其作为带有@Autowired 构造函数的普通bean 注入。 xyz 的值已正确填充,但是当 Spring 尝试将 yaml 解析为对象列表时,我得到了
nested exception is java.lang.IllegalStateException:
Cannot convert value of type [java.lang.String] to required type
[io.example.AvailableChannelsConfiguration$ChannelConfiguration]
for property 'channelConfigurations[0]': no matching editors or
conversion strategy found]
有什么线索吗?
【问题讨论】:
-
我遇到了完全相同的问题:我尝试了很多东西,但我得到了一个空对象,或者同样的错误
Cannot convert value of type ... String .... to MyObject ... no matching editors or conversion strategy found。奇怪的是我没有更改 Spring Boot 中可能影响 SnakeYAML 参数或行为的任何内容......实际上,到底是什么? -
我差点忘了,我用的是 Spring Boot 1.2.6
-
我的猜测是 yaml 中 '-' 字符之后的换行符
标签: java spring spring-boot yaml