Carte yaml pour objet hashmap dans SpringBoot
Je suis en train de Mapper le fichier yml à une table de hachage avec Clé de Chaîne et PromotionPolicy valeur dans mon Printemps de démarrage de l'application et l'utilisation de la valeur par défaut printemps de démarrage de la mise en œuvre pour analyser les valeurs, mais la PromotionPolicy objet contient uniquement les valeurs par défaut [0, false, false] pour tous les cas lorsque j'essaie de lire les valeurs de la Carte.
Mon yml est :
promotionPolicies :
policies:
P001NN:
PromotionPolicy:
expiryPeriodInDays: 16
reusable: true
resetExpiry: false
P001YN:
PromotionPolicy:
expiryPeriodInDays:1
reusable:true
resetExpiry:false
P001NY:
PromotionPolicy:
expiryPeriodInDays:1
reusable:false
resetExpiry:true
Le Modèle que j'ai est :
public class PromotionPolicy {
private int expiryPeriodInDays;
private boolean reusable;
private boolean resetExpiry;
public int getExpiryPeriodInDays() {
return expiryPeriodInDays;
}
public void setExpiryPeriodInDays(int expiryPeriodInDays) {
this.expiryPeriodInDays = expiryPeriodInDays;
}
public boolean isReusable() {
return reusable;
}
public void setReusable(boolean reusable) {
this.reusable = reusable;
}
public boolean isResetExpiry() {
return resetExpiry;
}
public void setResetExpiry(boolean resetExpiry) {
this.resetExpiry = resetExpiry;
}
}
Le composant java de la classe est comme ci-dessous:
@Configuration
@ConfigurationProperties(prefix = "promotionPolicies")
@EnableConfigurationProperties
@Component
public class PromotionPolicyConfig {
private Map<String, PromotionPolicy> policies = new HashMap<String, PromotionPolicy>();
public void setPolicies(Map<String, PromotionPolicy> policies) {
this.policies = policies;
}
public Map<String, PromotionPolicy> getPolicies() {
return policies;
}
}
De l'affichage des valeurs ici :
@RestController
@RequestMapping("/test")
public class LoyaltyServiceController {
@Autowired
PromotionPolicyConfig promotionPolicyConfig;
@RequestMapping(value = "/try")
public String tryThis() {
for (Entry<String, PromotionPolicy> entry : promotionPolicyConfig.getPolicies().entrySet()) {
System.out.print(entry.getKey() + " : ");
System.out.print(entry.getValue() + " : ");
System.out.print(entry.getValue().getExpiryPeriodInDays() + " : ");
System.out.print(entry.getValue().isResetExpiry() + " : ");
System.out.println(entry.getValue().isReusable() + " : ");
}
}
Ma Sortie est comme ci-dessous:
P001NN : com.expedia.www.host.loyalty.model.PromotionPolicy@63a1c99b : 0 : false : false :
P001YN : com.expedia.www.host.loyalty.model.PromotionPolicy@7892b6b6 : 0 : false : false :
P001NY : com.expedia.www.host.loyalty.model.PromotionPolicy@459928ab : 0 : false : false :
alors que je m'attendais à la suite de contenir les valeurs dans mon yml.
J'ai aussi essayé de supprimer la ligne "PromotionPolicy:" dans mon yml, mais pas de chance.
Demande de l'aider à comprendre comment puis-je Carte la yml dans le Mappage d'objets personnalisés.
- peut-être cela va aider stackoverflow.com/questions/32593014/...
Vous devez vous connecter pour publier un commentaire.
changer votre yml pour
Le problème était avec les espaces, la ci-dessous yml fonctionne très bien. Les espaces après le texte et : a requis