Quelle est la différence entre le chemin de classe , système de fichiers?
Je sais que:
-
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
des charges définition du contexte à partir d'un fichier XML situé dans le classpath, le traitement de contexte définitions classpath ressources.
-
ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");
des charges définition du contexte à partir d'un fichier XML dans le système de fichiers.
-
XmlWebApplicationContext
des charges définition du contexte à partir d'un fichier XML contenu dans une application web.
Mais, que veut dire exactement??
Merci 🙂
Vous avez déjà décrit comment ils sont différents dans l'utilisation. En interne, ils ont des comportements différents, comme XmlWebApplicationContent par défaut va chercher applicationContext.xml dans le dossier WEB-INF. Et aussi il faut init paramètre de configuration de l'emplacement. En gros, ils vont utiliser différentes approches pour charger les fichiers XML.
OriginalL'auteur Sachin J | 2012-05-02
Vous devez vous connecter pour publier un commentaire.
ClassPathXmlApplicationContext
permettra de lire des fichiers à partir de votre classpath. Ils doivent être enclasses
dossier de votre application web ou dans unjar
dans votrelib
dossier.FileSystemXmlApplicationContext
pouvez accéder à tous vos fichiers système, par exemplec:/config/applicationContext.xml
.XmlWebApplicationContext
certainement pouvez accéder aux fichiers contenus dans votre application web, mais ce n'est pas la chose la plus importante. Il met en œuvre WebApplicationContext et cela signifie qu'il permet de détecter ServletContextAware les haricots, le registre des étendues personnalisées (request, session, ...), parmi d'autres choses.OriginalL'auteur sinuhepop
Je pense que l'opinion exprimée ci-dessus peut avoir quelque chose de mal,
FileSystemXmlApplicationContext
ne pouvez pas accéder à votre système de fichiers entier, ce qu'il peut scanner est l'ensemble de votre dossier de projet.Afin de prouver ma conclusion-je faire un exemple, en utilisant d'abordClasspathXmlApplicationContext
et tout est normal, la deuxième fois que j'beans.xml fichier de mon dossier sur le bureau, donc il n'y a pas de beans.xml fichier dans le projet hirachy, et le changement ClassPathXmlApplicationContext àFileSytemXmlApplicationContext
et quelque chose va mal, la trace de l'erreur ci-dessous:Donc FileSystemXmlApplicationContext ne peuvent détecter que le projet actuel de tous les dossiers. Par exemple vous faire un répertoire nommé
config
sous le répertoire racine du projet, et vous pouvez modifier votre Classe Principale code comme ci-dessous:Et tout sera ok de nouveau. Donc, si tout comme sinuhepop dit, je pense qu'il y a quelque chose ont besoin d'être changé.
OriginalL'auteur Crabime
FileSystemXmlApplicationContext - Vous devez fournir le chemin complet de xml bean
ClassPathXmlApplicationContext - Dans ce cas vous NE devez définir le chemin d'accès complet, tant que classe est définie
OriginalL'auteur Uday