Héritage de configuration de Spring Bean
Dans Spring, l'héritage est pris en charge dans la configuration du bean pour qu'un bean partage des valeurs, des propriétés ou des configurations communes.
Un bean enfant ou un bean hérité peut hériter de ses configurations de bean parent, de ses propriétés et de certains attributs. De plus, les beans enfants sont autorisés à remplacer la valeur héritée.
Voir l'exemple complet suivant pour vous montrer comment l'héritage de configuration de bean fonctionne dans Spring.
package com.example.common; public class Customer { private int type; private String action; private String Country; //... }
Fichier de configuration du bean
Ci-dessus, un bean «BaseCustomerMalaysia» contient une valeur «Malaysia» pour la propriété du pays, et le bean «CustomerBean» a hérité cette valeur de son parent («BaseCustomerMalaysia»).
Exécuter
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml"); Customer cust = (Customer)context.getBean("CustomerBean"); System.out.println(cust); } }
sortie
Customer [type=1, action=buy, Country=Malaysia]
Le bean «CustomerBean» vient d’hériter de la propriété country de son parent («BaseCustomerMalaysia»).
Héritage avec résumé
Dans l'exemple ci-dessus, la «BaseCustomerMalaysia» est toujours en mesure d'instancier, par exemple,
Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
Si vous voulez faire de ce bean de base un modèle et ne pas autoriser d'autres personnes à l'instancier, vous pouvez ajouter un attribut «abstract» dans l'élément
Maintenant, le bean ‘BaseCustomerMalaysia’ est un pur modèle, pour que le bean en hérite uniquement, si vous essayez de l'instancier, vous rencontrerez le message d'erreur suivant.
Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'BaseCustomerMalaysia': Bean definition is abstract
Modèle d'héritage pur
En fait, le bean parent n'est pas nécessaire pour définir l'attribut de classe, il arrive souvent que vous ayez juste besoin d'une propriété commune pour le partage. Voici un exemple
Dans ce cas, le bean «BaseCustomerMalaysia» est un pur modèle, pour partager sa propriété «country» uniquement.
Le remplacer
Cependant, vous êtes toujours autorisé à remplacer la valeur héritée en spécifiant la nouvelle valeur dans le bean enfant. Voyons cet exemple
Le bean «CustomerBean» remplace simplement la propriété du pays parent («BaseCustomerMalaysia»), de «Malaysia» à «Japan».
Customer [Country=Japan, action=buy, type=1]
Conclusion
L'héritage de la configuration du bean Spring est très utile pour éviter la valeur ou les configurations communes répétées pour plusieurs beans.
Télécharger le code source
Télécharger -Spring-Bean-Inheritance-Example.zip (5 Ko)