Als ich heute das Projekt umgestaltete, bin ich auf ein Problem gestoßen. Unter Spring gibt es ein Paket, das alle Konfigurationsklassen enthält. Unter der Entwicklungstool-Klasse von idea wird angezeigt, dass der Anwendungskontext für diese Datei nicht konfiguriert ist, wie in der Abbildung dargestellt.
Zuerst dachte ich, es sei eine Warnung und habe sie ignoriert, aber später stellte ich fest, dass nicht alle Konfigurationsklassen geladen wurden, die dies veranlassten.
Ich war sehr verwirrt. Im ursprünglichen Projekt wurde kein Code geändert, aber der Code war modularisiert und aufgeteilt. Warum ist dieses Problem aufgetreten?
Nach der Online-Suche gibt es eine praktikable Methode, die zu verwenden ist
@Importieren
Tatsächlich ist diese Methode machbar und die Konfigurationsklassen sind alle geladen. Ich habe jedoch mehr als 10 Konfigurationsklassen. Allein der Gedanke daran bereitet mir Kopfschmerzen. Was mich noch mehr verwirrt, ist, warum mein ursprüngliches Projekt nicht funktioniert. Wo muss es konfiguriert werden? Es liegt ein Problem vor.
Später wurde ich von einem Experten beraten.
Das Problem tritt hier auf. Aufgrund der Unterauftragsvergabe habe ich diese Konfiguration unter der Startup-Klasse hinzugefügt.
Bean wird zum Scannen ausgehender Pakete verwendet.
Das Problem liegt hier. Wenn die Scanfunktion hier aktiviert ist, wird die Standard-Scan-Anmerkung von @SpringBootApplication ungültig.
Dadurch wird standardmäßig das aktuelle Paket gescannt.
Dann hatte ich zufällig dieses Problem mit dem Paket der Startup-Klasse.
Lösung . Löschen Sie die Annotation @ComponentScan(basePackages = "com.xxx.core") unter dem Startklassenpaket und platzieren Sie sie in einer beliebigen Konfigurationsklasse unter dem Startpaket.
Die Logik besteht darin, dass die @ComponentScan-Annotation von @SpringBootApplication der Startklasse ihr eigenes Paket scannt und die Konfigurationsklassen nacheinander einfügt. Beim Einfügen in eine bestimmte Konfigurationsklasse wird festgestellt, dass @ComponentScan vorhanden ist, sodass eine nach der anderen injiziert wird . Dies gibt die Bean unter dem Paket an.
Perfekte Lösung.
Interessierte Freunde können sich über das neu gestartete Gitee-freie Open-Source-Projekt des Bloggers ( Einkaufszentrum + APP + Miniprogramm + H5) informieren.
- Alibaba Cloud Server-Rabattseite: Klicken Sie hier, um teilzunehmen
- Tencent Cloud Server Flash Sale: Klicken Sie hier, um teilzunehmen