Lendo um mapa do yaml em Java ficando nulo
Estou tendo um problema ao ler meu yaml através do java, usando spring. Deixe-me mostrar o código primeiro
@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;
}
}
Meu arquivo yaml:
cassandra:
hosts: localhost:9142, 127.0.0.1:9142
keyspace: test
countries:
orders:
JPY: 1000
USD: 1000
requests:
JPY: 100000
USD: 100000
O contexto de primavera xml também possui:
<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" />
Agora, a expectativa que eu tenho (é) é que, durante o tempo de execução do meu aplicativo de teste de primavera (o contexto xml é dos meus recursos de teste, o yaml também está no meu teste), esses valores de pedidos e solicitações são definidos, mas eles são nulos. Além disso, observe que existem outros valores no meu yaml além disso que estou injetando usando @Value ($ {...}), eles são injetados absolutamente bem!
Eu olhei para isso:Spring Boot - injeta o mapa em application.yml
Fiz praticamente o mesmo, mas ainda assim meus valores não estão definidos. Por favor, ajude.
Eu estava passando pelo google, encontrei este link:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/YamlPropertiesFactoryBean.html
Nisto, diz, tudo é lido como uma string e não como um mapa. Existe alguma outra classe que suporte a leitura do arquivo Yaml da maneira que eles fizeram aqui:Spring Boot - injeta o mapa em application.yml
Ou o meu entendimento do YamlPropertiesFactoryBean está errado?
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'
Estas são as dependências em gradle. Você pode estar se perguntando por que eu tenho spring-core e spring-boot, essencialmente, não quero spring-boot, mas sem spring-boot, não consigo adicionar @EnableConfigurationProperties e @ConfigurationProperties, sinceramente não sei se consigo ler o conteúdo do yaml em um mapa sem eles. Portanto, essas duas dependências são adicionadas, mas se houver uma maneira de removê-las, eu ficaria mais do que feliz em remover essas duas dependências.
Atenciosamente, Pavan