In meiner Spring Boot App habe ich application.yaml Konfigurationsdatei mit folgendem Inhalt. Ich möchte es als Configuration-Objekt injiziert haben, mit Liste der Kanalkonfigurationen:Mapping-Liste in Yaml zur Liste der Objekte in Spring Boot
available-payment-channels-list:
xyz: "123"
channelConfigurations:
-
name: "Company X"
companyBankAccount: "1000200030004000"
-
name: "Company Y"
companyBankAccount: "1000200030004000"
Und @Configuration Objekt, das ich mit der Liste PaymentConfiguration Objekten gefüllt werden soll:
@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
}
}
Ich bin Injektion dies als eine normale Bean mit @ Autowired-Konstruktor. Wert von xyz ist korrekt aufgefüllt, aber wenn der Frühling versucht YAML in der Liste der Objekte zu analysieren Ich erhalte
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]
Irgendwelche Hinweise, was hier falsch ist?
Ich habe genau das gleiche Problem: Ich habe eine Menge Dinge ausprobiert, aber ich habe ein leeres Objekt, oder entweder den gleichen Fehler 'Kann Wert des Typs ... String konvertieren .... zu MyObject ... keine passenden Editoren oder Konversionsstrategie gefunden ". Sonderbare Sache ist, dass ich nichts in Spring Boot geändert habe, das SnakeYAML Parameter oder Verhalten beeinflussen könnte ... Wirklich, was zum Teufel? – Alex
Ich hätte fast vergessen, ich benutze Spring Boot 1.2.6 – Alex