Ich habe einen einfachen Komponententest erstellt, aber IntelliJ hebt ihn fälschlicherweise rot hervor. Markieren Sie es als Fehler
Keine Bohnen?
Wie Sie unten sehen können, besteht es den Test? Also muss es Autowired sein?
java
spring
intellij-idea
annotations
autowired
Robbo_UK
quelle
quelle
Antworten:
Ich hatte das gleiche Problem beim Erstellen einer Spring Boot- Anwendung mit ihren
@SpringBootApplication
Anmerkungen. Diese Anmerkung darstellt@Configuration
,@EnableAutoConfiguration
und@ComponentScan
entsprechend der Federreferenz .Wie erwartet funktionierte die neue Anmerkung ordnungsgemäß und meine Anwendung lief reibungslos, aber Intellij beschwerte sich weiterhin über unerfüllte
@Autowire
Abhängigkeiten. Sobald ich wieder zu verwenden geändert@Configuration
,@EnableAutoConfiguration
und@ComponentScan
getrennt, hörten die Fehler. Es scheint, dass Intellij 14.0.3 (und höchstwahrscheinlich auch frühere Versionen) noch nicht so konfiguriert ist, dass die@SpringBootApplication
Anmerkung erkannt wird .Wenn Sie die Fehler vorerst so sehr stören, kehren Sie zu diesen drei separaten Anmerkungen zurück. Andernfalls ignorieren Sie Intellij ... Ihre Abhängigkeitsauflösung ist korrekt konfiguriert, da Ihr Test erfolgreich ist.
Immer daran denken...
quelle
@SpringBootApplication
wurde dieser Fehler angezeigt . Ich folgte dem Rat von @ Jaõs Matos, indem ich denscanBasePackages
Parameter für@SpringBootApplication
das Paket / die Namespaces verwendete und diese spezifizierte, die gescannt werden sollten.Fügen
@Repository
Sie der Repository-Klasse eine Spring-Annotation hinzu .Ich weiß, dass es ohne diese Anmerkung funktionieren sollte. Wenn Sie dies hinzufügen, zeigt IntelliJ keinen Fehler an.
Wenn Sie Spring Data mit erweiterter
Repository
Klasse verwenden, handelt es sich um Konfliktseiten. Dann müssen Sie explizite Seiten angeben.Und als nächstes können Sie Ihr Repository ohne Fehler automatisch verdrahten.
Es ist wahrscheinlich keine gute Lösung (ich denke, Sie versuchen zweimal, das Repositorium zu registrieren). Aber arbeite für mich und zeige keine Fehler.
Möglicherweise kann in der neuen Version von IntelliJ behoben werden: https://youtrack.jetbrains.com/issue/IDEA-137023
quelle
Meine Version von IntelliJ IDEA Ultimate (2016.3.4 Build 163) scheint dies zu unterstützen. Der Trick ist, dass Sie das Spring Data-Plugin aktiviert haben müssen.
quelle
Manchmal müssen Sie angeben, wo @ComponentScan nach Komponenten suchen soll. Sie können dies tun, indem Sie die Pakete als Parameter dieser Anmerkung übergeben, z.
Wie bereits erwähnt, ersetzt die Annotation @SpringBootApplication @ComponentScan. In solchen Fällen müssen Sie daher dasselbe tun:
Zumindest in meinem Fall hörte Intellij auf, sich zu beschweren.
quelle
@SpringBootApplication(scanBasePackages={"com.a.b, com.a.c"})
und obwohl die App gut funktionierte, mochte Intellij es nicht. Wechsel zu@SpringBootApplication(scanBasePackages={"com.a.b", "com.a.c"})
für mich behoben!Ich löse dieses Problem immer, indem ich Folgendes tue: Einstellungen> Inspektionen> Spring Core> Code, als Sie vom Fehler zur Warnung der Schweregradoption wechseln
quelle
Ich verwende Spring-Boot 2.0 und Intellij 2018.1.1 Ultimate Edition und hatte das gleiche Problem.
Ich habe das Problem gelöst, indem ich @EnableAutoConfiguration in die Hauptanwendungsklasse eingefügt habe
quelle
Redundant declaration: @SpringBootApplication already applies @EnableAutoConfiguration
¯ \ _ (ツ) _ / ¯Überprüfen Sie, ob Sie die @ Service-Annotation in Ihrer Serviceklasse verpasst haben. Dies war bei mir der Fall.
quelle
Das Einfügen
@Component
oder Einfügen@configuration
in Ihre Bean-Konfigurationsdatei scheint zu funktionieren, dh wie folgt:quelle
Wenn Sie keine Änderungen an Ihrem Code vornehmen möchten, um Ihre IDE glücklich zu machen. Ich habe es gelöst, indem ich alle Komponenten zur Federfacette hinzugefügt habe.
quelle
Solange Ihre Tests bestanden sind, sind Sie gut. Bewegen Sie
alt + enter
den Mauszeiger über den Fehler undDisable Inspection
wählen Sie diesen im Untermenü des ersten Elements ausquelle
Ich hatte ein ähnliches Problem in der Spring Boot-Anwendung. Die Anwendung verwendet Feign (HTTP-Client-Synthetisierungsanforderungen von kommentierten Schnittstellen). Nachdem die Schnittstelle mit
SomeClient
Anmerkungen versehen wurde@FeignClient
, generiert Feign eine Laufzeit-Proxy-Klasse, die diese Schnittstelle implementiert. Wenn eine Spring-Komponente versucht, eine Bean vom Typ automatisch zu verdrahtenSomeClient
, beschwert sich Idea darüber, dass keine Bean vom TypSomeClient
gefunden wurde, da im Projekt tatsächlich keine echte Klasse vorhanden ist und Idea nicht das Verstehen beigebracht wird@FeignClient
Anmerkungen in irgendeiner Weise .Lösung: Schnittstelle
SomeClient
mit kommentieren@Component
. (In unserem Fall verwenden wir@FeignClient
Annotation nichtSomeClient
direkt, sondern Metaannotation,@OurProjectFeignClient
die@FeignClient
mit@Component
Annotationen versehen ist, und das Hinzufügen von Annotationen funktioniert ebenfalls.)quelle
@Component
zur Schnittstelle löst das Problem. Aber ich denke, das ist nicht der richtige Weg ... Meiner Meinung nach ist dies ein Fehler in IntelliJ IDEA oder nicht so schwer zu sein IntelliJ IDEA ist nicht bereit für neuere Feign-Versionen. Es funktioniert ohne@Component
in früheren Versionen (wo die@FeignClient
Annotationorg.springframework.cloud.netflix.feign
statt warorg.springframework.cloud.openfeign
- vielleicht ist dies die Ursache des Problems?). Haben Sie weitere Details (möglicherweise ein Bug-Ticket) dafür gefunden?@Component
)@FeignClient
aus demorg.springframework.cloud.netflix.feign
Paket stammt.Konfigurieren Sie den Anwendungskontext und alles wird in Ordnung sein.
quelle
Und noch eine letzte wichtige Information: Fügen Sie die hinzu,
ComponentScan
damit die App über die Dinge Bescheid weiß, die sie verkabeln muss. Dies ist bei dieser Frage nicht relevant. Wenn jedoch überhaupt keine durchgeführt@autowiring
wird, ist dies wahrscheinlich Ihre Lösung.quelle
Was Sie tun müssen, ist hinzufügen
@ComponentScan("package/include/your/annotation/component")
inAppConfiguration.java
.Da ich denke, dass Ihr
AppConfiguraion.java
Paket tiefer ist als das Paket Ihrer Anmerkungskomponente (@Service, @Component ...),wie
"package/include/your/annotation/component/deeper/config"
.quelle
Ich hatte ein ähnliches Problem in meiner Bewerbung. Als ich Anmerkungen hinzufügte, verschwand falsches Highliting.
quelle
Ich verwende diese Anmerkung, um diesen Fehler auszublenden, wenn er in IntelliJ v.14 angezeigt wird:
quelle
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Für mich bestand die Lösung darin, sie
@EnableAutoConfiguration
in die Anwendungsklasse@SpringBootApplication
zu stellen, um sie zu unterstreichen, weil sie redundant ist. Löschen Sie es und voila alle Ihre Warnungen bezüglich fehlender Bohnen sind verschwunden! Dumme Frühling ...quelle
In meinem Fall war das Verzeichnis, das ich @Autowired verwenden wollte, nicht auf derselben Ebene.
Nach dem Einrichten auf derselben Strukturebene verschwand der Fehler
hoffe es kann jemandem helfen!
quelle
Meine Lösung für dieses Problem in meiner Spring-Boot-Anwendung bestand darin, den Spring-Anwendungskontext zu öffnen und die Klasse für die fehlende automatisch verdrahtete Bean manuell hinzuzufügen!
(Zugriff über das Projektstrukturmenü oder das Spring Tool-Fenster ... bearbeiten Sie den "Spring Application Context")
Anstelle von SpringApplicationContext, der nur meine ExampleApplication-Federkonfiguration enthält, enthält es auch die fehlende Bean:
SpringApplicationContext:
et voilà: Die Fehlermeldung ist verschwunden!
quelle
Dies scheint immer noch ein Fehler im neuesten IntelliJ zu sein und hat mit einem möglichen Caching-Problem zu tun?
Wenn Sie die Annotation @Repository wie oben erwähnt als mk321 hinzufügen, speichern, entfernen Sie die Annotation und speichern Sie sie erneut. Dadurch wird das Problem behoben.
quelle
Alles, was Sie tun müssen, damit dies funktioniert, ist der folgende Code:
quelle
Ich musste nur @EnableAutoConfiguration verwenden, um das Problem zu beheben. Dieser Fehler hatte jedoch keine funktionalen Auswirkungen.
quelle
Dies kann gelöst werden, indem @EnableAutoConfiguration in der Hauptklasse der Spring-Boot-Anwendung platziert wird.
quelle
Manchmal - in meinem Fall also - ist der Grund ein falscher Import. Ich habe versehentlich importiert
anstatt
indem Sie blind die erste Wahl in den von Idea vorgeschlagenen Importen akzeptieren. Ich habe ein paar Minuten gebraucht, als es das erste Mal passierte :-)
quelle
Überraschenderweise konnte ein Feign-orientiertes Projekt, das erfolgreich mit Eclipse ausgeführt wurde, nicht in InteliJ ausgeführt werden. Beim Starten der Anwendung beschwerte sich InteliJ über den Feign-Client, den ich in die serviceImpl-Ebene einfügen wollte, und sagte: Das Feld personRestClient (mein Feign-Client) in ... erforderte eine Bean vom Typ ..., die nicht gefunden werden konnte. Erwägen Sie, in Ihrer Konfiguration eine Bean vom Typ '....' zu definieren.
Ich habe lange versucht zu verstehen, was los ist. Ich habe eine Lösung (für InteliJ) gefunden, die ich nicht ganz verstehe:
Oder wählen Sie Eclipse :)
quelle
Überprüfen Sie, ob das Paket Ihrer Bohne richtig geschrieben ist
quelle
Verwenden Sie @AutoConfigureMockMvc für die Testklasse.
quelle
Ich habe das Problem durch die Installation des mybatis-Plugins in IDEA gelöst. Als ich das Mybatis Plugin installiert habe, ist es verschwunden.
quelle
Einfach müssen Sie 2 Schritte machen
quelle
IntelliJ IDEA Ultimate
Fügen Sie Ihre Hauptklasse zum IntelliJ Spring-Anwendungskontext hinzu, z. B. Application.java
File
->Project Structure..
linke Seite: Projekteinstellung -> Module
rechte Seite: Finden Sie in Ihrer Paketstruktur
Spring
und fügen Sie hinzu+
Application.java
quelle