IntelliJ IDEA zeigt Fehler an, wenn ich die @Autowired
Annotation von Spring in der Klasse verwende, aber die Klasse funktioniert problemlos.
Hier ist diese Fehlermeldung:
Autowired-Mitglieder müssen in der gültigen Spring Bean (@ Component / @ Service usw.) Weniger definiert werden ... (Strg + F1) Überprüft Autowire-Probleme in einer Bean-Klasse.
spring
spring-mvc
intellij-idea
warnings
intellij-inspections
Vergeblich
quelle
quelle
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Antworten:
Ich hatte das gleiche Problem mit IntelliJ IDEA 13.1.4. Ich habe es gelöst, indem ich die Federfacette (Datei-> Projektstruktur) entfernt und nur "Erkennung" angezeigt habe.
quelle
Wenn Sie wissen, dass die Bean vorhanden ist und es sich nur um ein Problem der Inspektionen handelt, fügen Sie vor der Variablendeklaration Folgendes hinzu:
Manchmal kann IntelliJ nicht aufgelöst werden, wenn eine Bean deklariert wurde, z. B. wenn die Bean bedingt enthalten ist und die Bedingungsauflösung zur Laufzeit erfolgt.
quelle
Ich habe es behoben, indem ich die Unterdrückungswarnung hinzugefügt habe:
quelle
Habe hier den gleichen Fehler!
Es scheint, dass der Intellij nicht überprüfen kann, ob die Klassenimplementierung ein @Service oder eine @Component ist.
Lösen Sie es, indem Sie einfach von Fehler zu Warnung wechseln (Alt + Eingabetaste drücken).
quelle
Entfernen Sie die IML-Datei aus Ihrem gesamten Projektmodul und gehen Sie als Nächstes zu Datei -> Caches ungültig machen / neu starten
quelle
.iml
Datei, wähle in Maven Optionen auf der zu Re - Import -pom.xml
Datei und ein tatctrl + s
das zu regenerieren.iml
. Fehler weg.Datei -> ProjectStructure -> Module -> + (in der mittleren Spalte) -> Spring -> OK
quelle
Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich die Spring-Facette (Datei-> Projektstruktur) für jedes relevante Modul hinzugefügt und dann die Konfigurationsdateien hinzugefügt habe. Bei einigen Projekten (spring mvc) wurden die Konfigurationsdateien automatisch erkannt. Für ein JAR-Projekt musste ich die Konfigurationsdateien jedoch manuell hinzufügen.
quelle
Stellen Sie sicher, dass Ihre Spring Bean-Definitionen korrekt sind. Manchmal funktioniert die Anwendung einwandfrei. Sie zeigt nur einen Fehler in der IDE an. Überprüfen Sie die IML-Datei Ihres Projekts, wenn Sie eine Spring-Facette definiert haben.
quelle
Das Problem wurde behoben, indem Sie zu Datei >> Projektstruktur >> Facetten gingen und dann alle Konfigurationsdateien zu Spring Facet hinzufügten. Danach wurden Dateien erkannt, in denen sich die Beans befinden, und das Problem konnte behoben werden. IntelliJ, das diesen Scheck gibt, ist sehr wertvoll und IMHO sollte nicht deaktiviert werden.
quelle
Es scheint das Sichtbarkeitsproblem zu sein - der übergeordnete Controller sieht die Komponente, die Sie verkabeln möchten, nicht.
Versuchen Sie hinzuzufügen
an den übergeordneten Controller.
quelle
Stellen Sie sicher, dass Ihre IntelliJ Idea (IDE) alle erforderlichen Federkonfigurationen kennt, anhand derer Ihr Modul geprüft wird.
Sie können dies unter überprüfen
Manchmal müssen wir der IDE explizit mitteilen, dass die Federkonfiguration von einer Abhängigkeit stammt (ein JAR, das in Ihrem Projektklassenpfad vorhanden ist).
quelle
Ich habe das gleiche Problem. Meins war, weil die Bean, die die automatisch verdrahtete Referenz enthielt, keine Spring-Komponente war (es war eine EJB), sondern einen SpringBeanAutowiringInterceptor Interceptor erhielt, der die Verwendung von autowiring ermöglicht. Ich denke, Intellij nutzt diese Möglichkeit bei seiner Autowiring-Inspektion nicht.
quelle
Ich hatte auch dieses Problem. Durch Ausführen von alt+ enterund Aufforderung, die Federinspektion auf der betroffenen Linie entweder erneut auszuführen oder zu deaktivieren, wurde dies behoben. Dies scheint erst nach dem 13.4-Update zu einem Problem geworden zu sein.
quelle
In meinem Fall fehlte mir das Schreiben in web.xml:
und in der Anwendungskontextdatei:
Nachdem Sie diese Tags hinzugefügt und maven ausgeführt haben, um das Projekt neu zu erstellen, wird der automatisch verdrahtete Fehler in Intellj angezeigt und das Bean-Symbol wird am linken Rand angezeigt:
quelle
Meins ist dafür gedacht, @Repository nicht zu meiner CrudRepository-Oberfläche hinzuzufügen. Das Tutorial, das ich mir angesehen habe, hat es nicht zu STS hinzugefügt und es hat sich nicht beschwert.
quelle
Sie sollten überprüfen, ob der Klasse @Component, @Repository oder ähnliches hinzugefügt wurde
quelle
Ich habe das durch Hinzufügen einer Web-Facette gelöst.
quelle
quelle
Ich habe dieses Problem auf diese Weise gelöst. In IntelliJ sollten sich alle Ihre Pakete in einem Unterpaket befinden, das das Unterpaket von main / java ist. Zum Beispiel habe ich alle meine Pakete unter src / main / java / com.misisol.watchStore / abgelegt und der Frühling konnte meine Bohnen danach finden.
quelle
Inject Bean mit @Qualifier hat das Problem für mich gelöst.
quelle
Ich hatte ein ähnliches Problem. Ich habe es gelöst, indem ich die Option "Explizit kommentierte Beans verarbeiten" deaktiviert habe (siehe Abbildung unten). Diese Option ist unter Linux standardmäßig aktiviert. Jetzt sind die Anmerkungen @Service und @Configurations sichtbar. Bildschirmfoto
quelle
ein bisschen spät, aber ich hoffe, es hilft jemand anderem.
Stellen Sie sicher, dass @Service in der Implementierungsklasse für den Service enthalten ist
So habe ich den Fehler behoben.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe keine Antworten gefunden, die dieses Problem für mich gelöst haben, daher werde ich meine Lösung bereitstellen.
Hinweis: Ich dachte , das Problem gewesen sein mag dies , aber mein Problem wurde nicht im Zusammenhang mit der gleichen Schnittstelle zweimal implementieren. Die Verwendung
@Qualitier
hat mein Problem behoben, aber es war ein Verband und keine richtige Lösung, also habe ich mich damit nicht zufrieden gegeben.HINTERGRUND
Ich habe die Aufgabe, ein altes Projekt zu pflegen, das verschiedene Versionen des Frühlings durchlaufen hat und nur für separate Module aktualisiert wurde. Daher mussten die Dinge, gelinde gesagt, überarbeitet werden. Ich hatte anfangs das Problem mit doppelten Bohnen bekommen, und das Basteln mit Dingen änderte das Problem zwischen dem Problem von OP und dem Problem mit doppelten Bohnen hin und her, obwohl es nur eine Bohne gab. Das Navigieren zu den doppelten Beans ging immer zur gleichen Klasse.
DAS THEMA
Das Problem war in einer
@Repository
Klasse vorhanden, die sich@Autowired
in einer@Service
Klasse befand, in der auch die@ComponentScan
Anmerkung enthalten war. Ich bemerkte, dass ich auch eine Feder hatteapplication-config.xml
, die eincontext:component-scan
Basispaket ausführte, was meiner Meinung nach der ursprüngliche Ansatz in älteren Versionen von Spring war. Ich war dabei, eine neue Niederlassung zu gründen, indem ich Teile einer alten und einer neueren Niederlassung in ein Unterstützungsprojekt einbezog, das in verschiedenen Projekten verwendet wurde, die über mehrere Jahre hinweg entwickelt wurden, und deshalb gab es eine solche Mischung von Methoden.EINFACHE LÖSUNG
Da der modernere Verwendungsansatz
@ComponentScan
bereits implementiert war, habe ich ihn einfach entferntapplication-config.xml
und das Problem wurde gelöst.quelle
Folgendes hat bei mir funktioniert:
quelle
Ich bin vielleicht etwas spät dran, aber nachdem ich Stunden damit verbracht habe, über dieses Thema zu recherchieren.
Ich fand heraus, dass in der neuesten Version IntelliJ 2020 @AutoWired optional ist und eine konstruktorbasierte Abhängigkeitsinjektion vorzuziehen ist.
Ich habe das Problem behoben, indem ich einfach die @ AutoWired Annotation aus der Service- und Controller-Klasse entfernt und eine konstruktorbasierte Abhängigkeitsinjektion verwendet habe.
Dieser Link könnte helfen.
Viel Spaß beim Codieren!
quelle
Ich hatte dieses Problem mit nur einem Dienst mit konstruktorbasierter Abhängigkeitsinjektion mit der Version 2019.2.4 von IntelliJ. Ich fand es hilfreich, den Namen des Dienstes zu ändern (Umschalt + f6) und dann die Änderungen von der Git-Ebene zu verwerfen.
quelle