Was ist der Unterschied zwischen Klasse Pfad -, Datei-system?
Ich weiß, dass:
-
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Belastungen Kontext-definition aus einer XML-Datei in den Klassenpfad, der Behandlung von Kontext-Definitionen als classpath-Ressourcen.
-
ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");
Belastungen Kontext-definition aus einer XML-Datei im Dateisystem.
-
XmlWebApplicationContext
Belastungen Kontext-definition aus einer XML-Datei innerhalb einer web-Anwendung.
Aber, was meinst du damit genau??
Dank 🙂
- Sie haben bereits beschrieben, wie Sie verschiedene in Gebrauch. Intern haben Sie unterschiedliche Verhaltensweisen wie XmlWebApplicationContent standardmäßig Aussehen wird applicationContext.xml im WEB-INF-Ordner. Und es erfordert auch die init-parameter für die Konfiguration der verschiedenen Lage. Im Grunde Sie verwenden verschiedene Ansätze, um das laden der XML-Dateien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ClassPathXmlApplicationContext
wird das Lesen von Dateien von Ihrem Klassenpfad befinden. Sie müssen inclasses
- Ordner Ihres web-Anwendung oder in einerjar
in Ihremlib
Ordner.FileSystemXmlApplicationContext
können alle Ihre Datei-system, zum Beispielc:/config/applicationContext.xml
.XmlWebApplicationContext
sicherlich kann der Zugriff auf die enthaltenen Dateien in Ihrem web-Anwendung, aber das ist nicht das wichtigste. Es implementiert WebApplicationContext und dies bedeutet, dass es erkennt ServletContextAware Bohnen, registrieren von benutzerdefinierten scopes (request -, session, ...) unter anderem.FileSystemXmlApplicationContext - geben Sie vollständige Pfad der xml-bean
ClassPathXmlApplicationContext - In diesem Fall Sie DONOT müssen vollständige Pfad, solange classpath gesetzt ist
Ich denke, dass oben die Meinung vielleicht etwas falsch
FileSystemXmlApplicationContext
kann keinen Zugriff auf Ihre gesamte Datei-system, was es können nur Scannen Sie Ihr gesamte Projekt-Ordner.Um zu beweisen, mein Fazit ich mache ein Beispiel, zuerst mitClasspathXmlApplicationContext
und alles ist normal, das zweite mal, dass ich verschieben beans.xml Datei auf meinem desktop-Ordner, so dass es keine beans.xml Datei im Projekt-hirachy, und ändern Sie ClassPathXmlApplicationContext zuFileSytemXmlApplicationContext
und etwas schief geht, Fehler-trace unter:So FileSystemXmlApplicationContext kann nur erkennen das aktuelle Projekt alle Ordner. Zum Beispiel machen Sie ein Verzeichnis, das benannt
config
unter dem Projekt-root-Verzeichnis, und ändern Sie die Main-Klasse code wie unten:Und alles wird wieder ok. Also wenn alle wie sinuhepop sagte, ich denke, es sollte etwas geändert werden müssen.