Ich habe eine Codezeile, die lautet: File file = new File(getFile())
in einer Java-Klasse HandleData.java
Methode - getFile()
nimmt den Wert der Eigenschaft fileName
. Und fileName
wird durch application_context.xml
mit einem Bean-Abschnitt der Klasse - HandleData wie folgt injiziert:
Ich habe das Projekt erfolgreich erstellt und überprüft, dass - DataFile.xml
in WEB-INF/classes
vorhanden ist. Und die HandleData.class ist in WEB-INF/classes/com/profile/transacon
Aber wenn ich es starte, wirft es mir eine nicht gefundene Ausnahme.
Wenn ich den absoluten Pfad injiziere ( C:\MyProjectWorkspace\DataProject\target\ProfileService\WEB-INF\classes\DataFile.xml
findet die Datei erfolgreich.).
Könnte jemand dabei helfen, den richtigen Pfad für die Injektion herauszufinden, damit die Datei aus dem Klassenpfad übernommen wird?
Während das Eingeben von File
im Allgemeinen der bevorzugte Ansatz ist, können Sie Spring ResourceLoader auch für das dynamische Laden von Ressourcen nutzen.
Im Allgemeinen ist dies so einfach wie das injizieren der ResourceLoader
in Ihre Spring Bean:
Dann aus dem Klassenpfad laden:
%Vor%Da OP nur den Dateinamen über den Frühling injiziert, möchten Sie immer noch das Dateiobjekt über Code erstellen, Sie sollten ClassLoadeer verwenden, um die Datei
zu lesenVersuchen Sie es
%Vor%Bearbeiten
Hier ist der Rest des Codes, um die Datei
zu lesen %Vor%Bearbeiten 2
Da Sie es als File Object haben wollen, um den FileInputStream zu bekommen
probiere das
aus %Vor%Sie sollten:
%Vor% Und es sollte als org.springframework.core.io.Resource
ähnlich wie diese Antwort