Lesen einer Karte aus Yaml in Java, wobei null erhalten wird

Ich habe ein Problem damit, meine Yamswurzel mit der Feder durch Java zu lesen. Lassen Sie mich zuerst den Code zeigen

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "countries")
public class UserLimitReader {

    private HashMap<String, Integer> orders;

    private HashMap<String, Integer> requests;

    public HashMap<String, Integer> getOrders() {
        return orders;
    }

    public void setOrderRedeemableLimit(HashMap<String, Integer>         orders) 
{
        this.orders= orders;
}

public HashMap<String, Integer> getRequests() {
    return requests;
}

public void setMonthlyRedeemableLimit(HashMap<String, Integer> requests) {
    this.requests= requests;
}
}

Meine Yaml-Datei:

cassandra:
    hosts: localhost:9142, 127.0.0.1:9142
    keyspace: test
countries:
    orders:
      JPY: 1000
      USD: 1000
    requests:
      JPY: 100000
      USD: 100000

Der Frühling Kontext xml hat auch diese:

<bean id="yamlProperties"
    class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
    <property name="resources">
        <value>classpath:config/application.yaml</value>
    </property>
</bean>

<context:property-placeholder
    properties-ref="yamlProperties" />

Nun, die Erwartung, die ich habe (hatte), ist, dass während der Laufzeit meiner Frühlingstest-Anwendung (der Kontext xml stammt aus meinen Testressourcen, das yaml ist auch in meinem Test) diese Werte von Aufträgen und Anfragen gesetzt werden , aber sie sind null. Beachten Sie auch, dass es in meinem Yam noch andere Werte gibt, die ich mit @Value ($ {...}) injiziere. Sie werden absolut gut injiziert!

Ich sah das an:Spring Boot - Karte aus application.yml einschleusen

Ich habe praktisch das gleiche getan, aber meine Werte sind noch nicht festgelegt. Freundlich helfen

Ich bin durch Google gegangen und habe diesen Link gefunden:http: //docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.htm

arin heißt es, dass alles als Zeichenfolge und nicht als Karte gelesen wird. Gibt es eine andere Klasse, die das Lesen von Yaml-Dateien so unterstützt, wie sie es hier getan haben:Spring Boot - Karte aus application.yml einschleusen

Oder ist mein Verständnis von YamlPropertiesFactoryBean falsch?

compile 'org.springframework:spring-core:4.2.+'
compile 'org.springframework:spring-beans:4.2.+'
compile 'org.springframework:spring-context:4.2.+'
compile 'org.springframework.boot:spring-boot:1.3.1.RELEASE'
compile 'org.springframework.boot:spring-boot-configuration-processor:1.3.1.RELEASE'

Dies sind die Abhängigkeiten in Gradle. Sie wundern sich vielleicht, warum ich Spring-Core und Spring-Boot habe, im Wesentlichen, ich möchte keinen Spring-Boot, aber ohne Spring-Boot kann ich keine @EnableConfigurationProperties und @ConfigurationProperties hinzufügen, ehrlich gesagt nicht weiß ob ich den yaml inhalt ohne sie in eine map einlesen kann. Daher werden diese beiden Abhängigkeiten hinzugefügt, aber wenn es eine Möglichkeit gibt, sie zu entfernen, würde ich diese beiden Abhängigkeiten gerne entfernen.

erzliche Grüße, Pav

Antworten auf die Frage(2)

Ihre Antwort auf die Frage