W mojej aplikacji Spring Boot mam plik konfiguracyjny application.yaml z następującą treścią. Chcę mieć to wstrzykiwany jako obiekt konfiguracji z listy konfiguracji kanałów:Lista mapowania w Yaml do listy obiektów w Spring Boot
available-payment-channels-list:
xyz: "123"
channelConfigurations:
-
name: "Company X"
companyBankAccount: "1000200030004000"
-
name: "Company Y"
companyBankAccount: "1000200030004000"
I @Configuration obiekt Chcę być wypełnione listy obiektów PaymentConfiguration:
@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
}
}
ja to jak wstrzykiwanie normalna fasola z @Autowiowanym konstruktorem. Wartość xyz jest wypełniona prawidłowo, ale kiedy wiosna próbuje zanalizować yaml do listy obiektów Dostaję
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]
żadnych wskazówek co tu jest nie tak?
Mam dokładnie ten sam problem: próbowałem wielu rzeczy, ale dostałem pusty obiekt, albo ten sam błąd 'Nie można przekonwertować wartości typu ... String .... do MyObject ... brak pasujących edytorów lub znaleziona strategia konwersji ". Dziwne jest to, że nie zmieniłem niczego w Spring Boot, które mogłoby wpłynąć na parametry lub zachowanie SnakeYAML ... Właściwie, co do cholery? – Alex
Prawie zapomniałem, używam Spring Boot 1.2.6 – Alex