Was ist der Unterschied zwischen Klassenpfad und Dateisystem?

8

Ich weiß das:

  1. ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

    lädt die Kontextdefinition aus einer XML-Datei im Klassenpfad und behandelt Kontextdefinitionen als Klassenpfadressourcen.

  2. ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");

    lädt die Kontextdefinition aus einer XML-Datei im Dateisystem.

  3. XmlWebApplicationContext

    lädt die Kontextdefinition aus einer XML-Datei, die in einer Webanwendung enthalten ist.

Aber was heißt das genau?

Danke:)

    
Sachin J 02.05.2012, 10:48
quelle

3 Antworten

16
  • ClassPathXmlApplicationContext liest Dateien aus Ihrem Klassenpfad. Sie müssen sich im Ordner classes Ihrer Webanwendung oder in einem jar in Ihrem Ordner lib befinden.

  • FileSystemXmlApplicationContext kann auf Ihr gesamtes Dateisystem zugreifen, z. B. c:/config/applicationContext.xml .

  • XmlWebApplicationContext kann sicherlich auf Dateien zugreifen, die in Ihrer Webanwendung enthalten sind, aber das ist nicht das Wichtigste. Es implementiert WebApplicationContext und das bedeutet dass es ServletContextAware -Bohnen erkennt , benutzerdefinierte Bereiche (Anfrage, Sitzung, ...) unter anderem registrieren.

sinuhepop 02.05.2012, 11:11
quelle
0

Ich denke über der Meinung kann etwas falsch sein, FileSystemXmlApplicationContext kann nicht auf Ihr ganzes Dateisystem zugreifen , was es nur scannen kann, ist Ihr gesamter Projektordner. Um meine Schlussfolgerung zu beweisen, mache ich ein Beispiel, zuerst mit ClasspathXmlApplicationContext und alles ist normal, das zweite Mal ich beans.xml Datei in meinen Desktop-Ordner zu verschieben, so gibt es keine beans.xml Datei im Projekt Hirachy, und ändern Sie ClassPathXmlApplicationContext in FileSytemXmlApplicationContext und etwas schief geht , Fehlerspur unten:

%Vor%

So kann FileSystemXmlApplicationContext nur den aktuellen Ordner des Projekts erkennen. Beispielsweise erstellen Sie ein Verzeichnis mit dem Namen config im Stammverzeichnis des Projekts, und Sie können Ihren Hauptklassencode wie folgt ändern:

%Vor%

Und alles wird wieder gut. Also, wenn alle wie sinuhepop sagten, ich denke, da sollte etwas geändert werden müssen.

    
Crabime 10.11.2016 10:12
quelle
0

FileSystemXmlApplicationContext - Sie müssen den vollständigen vollständigen Pfad der xml-Bean angeben ClassPathXmlApplicationContext - In diesem Fall müssen Sie den vollständigen Pfad NICHT festlegen, solange der Klassenpfad festgelegt ist

    
Uday 12.02.2017 03:25
quelle

Tags und Links