2017-03-01 1 views
0

J'ai développé une API Spring REST qui récupère les préférences d'appel d'un client à partir de la base de données (Postgres).Spring REST API: Retour Préférences par défaut

J'ai une classe pour CallPreferences comme ci-dessous.

public class CallPreferences { 
    private Boolean allowInternationalCalling; 

    private Boolean allowInternationalRoaming; 

    private List<DataOptions> dataOptions; 

    private AutoPayPrefences autoPayPreferences; 

    // getter and setters. 

} 

Toutes les préférences ci-dessus sont enregistrées dans une seule colonne dans un tableau. Une ligne de la table peut ressembler à ceci

Customer_Id | customer_preferneces 
10112  | "preferences": {"allowInternationalCalling": false, 
          "allowInternationalRoaming": true, 
          "dataOptions": ["plan" : "4GLTE", 
             "data-limit" : "10GB" ], 
          "autoPay": {"payment-option" : "creditcard", 
             "payment-date": "2nd every month", 
             "reminder": "email"} 
          } 

J'utilise mappeur de ligne pour cartographier les préférences dans la base de données à l'POJO

Quand il n'y a pas de préférences trouvées dans la base de données, je voudrais répondre à préférences par défaut comme ci-dessous.

"preferences": { 
    "allowInternationalCalling": true, 
    "allowInternationalRoaming": true, 
    "dataOptions": [], 
    "autoPay": {} 
} 

Je sais que nous pouvons simplement initialiser les valeurs dans le niveau de la classe ou si les préférences == null, je peux définir les valeurs par défaut pour chaque propriété. Mais se demandant s'il y a une meilleure façon de le faire en utilisant des fonctionnalités de printemps.

+0

Que diriez-vous de surcharger les constructeurs? – jitsonfire

Répondre

0

Lors de la génération de classes avec Jaxb, tous les attributs de liste ont le getter qui affirme que l'attribut est initialisé si null. Je pense que c'est la philosophie de marshalling/unmarshalling des objets avec des attributs non nullable.