Kiedy mam w application.properties:

config.map-of-map.Key1.Key2=111

To nie może być dopasowane do zmiennej:

Map<String, Map<String, Integer>> mapOfMap;

Co jest częścią klasy

@ConfigurationProperties(prefix = "config")
public MyClass getMyClass() {
    return new MyClass();
}

Kiedy chcę odczytać dane z tej mapy, czytam String zamiast Integer i otrzymuję Wyjątek:

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Czy jest jakiś sposób, jak zmusić go do liczby całkowitej?

-2
hudi 20 listopad 2019, 17:16
1
Jak próbowałeś odczytać dane? Czy możesz pokazać kod?
 – 
deHaar
20 listopad 2019, 17:19
Jest to aplikacja spring-boot, która domyślnie odczytuje dane z tego pliku. Jest to funkcja wiosennego buta
 – 
hudi
20 listopad 2019, 17:20
1
Jak to skonfigurowałeś? Czy możesz pokazać konfigurację funkcji? Oczywiście istnieje niezgodność typów... Z próbki twojej właściwości mogę sobie tylko wyobrazić, że 111 jest analizowany jako String, a następnie próbuje się go umieścić w Map<String, Integer> jako wartość.
 – 
deHaar
20 listopad 2019, 18:24
Sposób, w jaki właściwości przechowują dane początkowo, to wszystkie ciągi, więc próbujesz rzutować wartości z Map na Map, musisz je ręcznie przekonwertować za pomocą Integer.parseInt
 – 
Joe
20 listopad 2019, 19:34

1 odpowiedź

Nie wiem, dlaczego głosuje się tak negatywnie na to pytanie. Ale wszystko, co muszę zrobić, to zaktualizować wersję rozruchową sprężynową.

Używałem wersji 2.1.1.RELEASE ale w wersji 2.2.1.RELEASE może analizować również liczbę całkowitą w mapie. Następnie postępuję zgodnie z tym przykładem dla zagnieżdżonych mapowanie mapy

0
hudi 21 listopad 2019, 13:53