Documenté ici, il déclare
Ce préfixe spécial spécifie que toutes les ressources classpath qui correspondent au nom donné doivent être obtenues (en interne, cela se produit essentiellement via un appel ClassLoader.getResources (...)), puis fusionnées pour former la définition finale du contexte d'application.
Quelqu'un peut-il expliquer cela?
Quelle est la différence entre utiliser classpath*:conf/appContext.xml
plutôt que classpath:conf/appContext.xml
sans astérisque.
Réponses:
DÉFINITION SIMPLE
Le
classpath*:conf/appContext.xml
signifie simplement que tous les fichiers appContext.xml sousconf
dossiers dans tous vos pots sur le chemin de classe seront ramassés et réunis dans un grand contexte d'application.En revanche,
classpath:conf/appContext.xml
ne chargera qu'un de ces fichiers ... le premier trouvé sur votre chemin de classe.la source
La
classpath*:...
syntaxe est principalement utile lorsque vous souhaitez créer un contexte d'application à partir de plusieurs fichiers de définition de bean, en utilisant une syntaxe générique.Par exemple, si vous construisez votre contexte en utilisant
classpath*:appContext.xml
, le chemin de classe sera analysé pour chaque ressource appeléeappContext.xml
dans le chemin de classe, et les définitions de bean de toutes fusionnées dans un seul contexte.En revanche,
classpath:conf/appContext.xml
obtiendra un et un seul fichier appelé àappContext.xml
partir du chemin de classe. S'il y en a plus d'un, les autres seront ignorés.la source
classpath *: il fait référence à une liste de ressources et charge tous ces fichiers présents dans le chemin de classe et la liste peut être vide et si aucun fichier de ce type n'est présent dans le chemin de classe, l'application ne lève aucune exception (ignore simplement l'erreur).
classpath: il fait référence à une certaine ressource et charge uniquement le premier fichier trouvé sur le classpath et si aucun fichier de ce type n'est présent dans le classpath, il lèvera une exception
la source
Resource
, car une ressource pointe vers une seule ressource à la fois." en plus je viens de recevoir cette erreur bizarre, c'est comme ça que je me suis retrouvé ici. Si vous prévoyez d'importer des ressources, l'utilisation du préfixe de chemin de classe générique n'a aucun sens.Le code source de Spring:
la source