Notre application a une obligation de prise en charge de l'hébergement multiclient. Chaque client embarqué peut potentiellement remplacer 1 ou plusieurs beans ou certaines propriétés d'un bean défini au niveau de la plateforme principale (code/définitions communs). Je me demande quelle est la meilleure façon de gérer cela.Surcharge du bean défini dans le contexte parent dans un contexte enfant
Répondre
Spring vous permet de redéfinir le même nom de bean plusieurs fois et prend la dernière définition de bean traitée pour un nom donné comme étant celle qui gagne. Ainsi, par exemple, vous pourriez avoir un fichier XML définissant vos beans principaux, et l'importer dans un fichier XML spécifique au client, qui redéfinit également certains de ces beans. C'est un peu fragile, cependant, puisqu'il n'y a aucun mécanisme pour dire spécifiquement "cette définition de bean est un override".
J'ai trouvé que la façon la plus propre de gérer cela est d'utiliser le new @Bean
-syntax introduced in Spring 3. Plutôt que de définir des beans en XML, vous les définissez en Java. Ainsi, vos beans de base seraient définis dans une classe sans aucun @Bean
, et vos configs client la sous-classeraient, et remplaceraient les beans appropriés. Cela vous permet d'utiliser les annotations java standard @Override
, indiquant explicitement qu'une définition de bean donnée est remplacée.
- 1. Ne peut pas lier automatiquement haricot enfant (défini dans un contexte web) à partir du contexte racine
- 2. Comment déclarer un contexte d'application parent
- 3. Lance un événement enfant modèle dans le contexte actuel?
- 4. Modifier le contexte d'exécution du script Javascript
- 5. Changer le contexte en parent avec jQuery
- 6. mod_rewrite: Préférer le contexte du serveur au contexte du répertoire?
- 7. Spring Application Contexte disponible dans le constructeur
- 8. Environnement.FailFast dans un contexte Web
- 9. Problème dans le contexte Listener
- 10. Obtenir le contexte d'appel dans un service
- 11. Dessiner dans un contexte bitmap
- 12. Référencer un fichier via classpath dans le contexte du printemps
- 13. Chargement du contexte correct dans Spring.NET Validation
- 14. contexte tomcat défini dans server.xml ne se charge pas
- 15. JSF - appeler FacesContext.getCurrentInstance() dans un contexte statique
- 16. <contexte: propriété-espace réservé> propriétés non accessibles au contexte enfant (web)
- 17. jQuery contexte du sélecteur
- 18. Exécuter du code dans le contexte du thread principal (Lazarus)
- 19. Struts2 Gestion du contexte
- 20. Contexte dans Android Programmation
- 21. obtenir le contexte dans le convertisseur?
- 22. Contexte dans Android
- 23. erreur dans C++, dans le contexte
- 24. Comment imprimer le contenu du contexte dans le modèle?
- 25. Actionscript Enfant dans le parent parent
- 26. Comment ajouter un paramètre de contexte après le chargement du contexte de ressort
- 27. Caractères génériques pour les ressources dans un contexte Tomcat Servlet.xml
- 28. Que peut-on utiliser comme [contexte] dans jQuery (expression, [contexte])?
- 29. .NET - n'existe pas dans le contexte actuel
- 30. ASP.NET MVC2 RenderAction rend le contexte ViewModel lâche parent
Êtes-vous sûr de pouvoir redéfinir un bean avec le même identifiant/nom dans un ctx enfant? –
en regardant cette page http://stackoverflow.com/tags/spring/topusers Je pense qu'il sait de quoi il parle –
merci. Je ne remets pas en question l'exactitude de son message. Je voulais une réassurance sur cette affirmation particulière, car ma source de développement m'a dit que ce n'est pas possible dans les nouvelles versions du printemps, c'est-à-dire 2.5.x et plus tard. Il a essayé de redéfinir le bean (qui a été défini dans le contexte parent) dans un contexte enfant avec le même nom et il a reçu une erreur au démarrage. –