___ qstnhdr ___ @Autowired-Objekte erhalten einen Nullwert
___ antwort4816368 ___
Sie benötigen dies ganz oben in Ihrer Testklasse:
%Vor%
Ich habe JUnit4 angenommen; meine Aufsicht.
Sie benötigen das Context-Konfigurations-Tag irgendwo in einem Anwendungskontext, aber ich sehe nirgendwo in Ihrem Code, wo Sie tatsächlich eine Anwendungskontextdatei öffnen und einen ApplicationContext erstellen. Normalerweise wird dies in einer Einrichtungsmethode für Ihren Test durchgeführt. Sie werden mehr Glück haben, wenn Sie irgendwo einen ApplicationContext erstellen. Versuchen Sie, das XML von Ihrem CLASSPATH in einer Setup-Methode zu lesen, und sehen Sie, ob das hilft.
___ answer8039323 ___
Fügen Sie %code% dem DAO / DAOImpl hinzu.
___ answer10895464 ___
Sie erstellen das POJO außerhalb des Frühlingskontexts.
Wenn Sie wirklich "manuell" instanziieren möchten, können Sie dies beheben, indem Sie %code% zu Ihrer Konfiguration hinzufügen und dann %code% mit %code%
annotieren
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen.
___ tag123spring ___ Das Spring Framework ist ein Open-Source-Framework für die Anwendungsentwicklung auf der Java-Plattform. Im Mittelpunkt steht die umfassende Unterstützung von komponentenbasierten Architekturen, und es verfügt derzeit über ein Dutzend hochintegrierter Module.
___ tag123javaee ___ Die Java Enterprise Edition (Java EE) ist eine Spezifikation, die eine Sammlung von Java-basierten Server- und Clienttechnologien und deren Interoperabilität definiert. Das [java-ee] -Tag ist rudimentär zu fokussierten Fragen über die spezifischeren APIs wie [jsf], [servlets], [jpa], [cdi], [ejb] usw. Verwenden Sie es nur bei Problemen mit allgemeinen Kombinationen (zB Interaktion zwischen einzelnen APIs und / oder Anwendungsservern).
___ tag123autowired ___ Autowinding ist ein DI-Container-Feature, bei dem die Abhängigkeiten nach bestimmten Kriterien automatisch gesucht werden.
___ qstntxt ___
Versuchen Sie, ein Projekt einzurichten, scheitern jedoch beim Autowiren von Objekten durch Spring.
%Vor%
Das Ausführen gibt mir eine NullPointerException, wenn cd.addContact aufgerufen wird.
Die ContactDaoImpl:
%Vor%
Meine Servlet-Datei:
%Vor%
Meine Datei hibernate.cfg.xml:
%Vor%
Meine web.xml-Datei:
%Vor%
Ich nehme an, der Fehler ist, dass die SessionFactory nicht korrekt über @Autowired initialisiert wird, aber warum ist das so? Könnte es sich um ein einfaches Verzeichnisstruktur- / Dateipfadproblem handeln oder ist es etwas komplizierter?
Vielen Dank im Voraus.
UPDATE:
KontaktDAOImpl Klasse:
%Vor%
___ answer4816434 ___
Sie benötigen dies in Ihrer Spring-Konfiguration, damit AutoWire funktionieren kann
%Vor%
___ answer4816373 ___
Um Spring-Features zu verwenden (Autowiring, Call-to-Construct-Methoden oder -Aspekte) müssen Sie Spring die Instances anstelle von %code% instanziieren lassen.
Zum Beispiel:
%Vor%
%code% durchsucht die Klassen in den Klassen im Paket %code% nach Klassen mit Spring-Anmerkungen. Es erfordert Frühling 3.0 zu arbeiten. Zuvor sollten Sie die folgende Zeile in Ihrer %code% -Datei hinzufügen:
%Vor%
___ answer4816315 ___
Sie müssen die ContactDAO-Instanz aus dem Spring-Kontext abrufen. Sie greifen sich mit %code% keyword an.
Siehe den folgenden Link;
@Autowired Annotation kann keine Bean injizieren JUnit-Klasse
oder wenn nicht Unit Test
%Vor%
Ссылка
___