Die Idee im Frühjahrsprojekt weist darauf hin, dass der Anwendungskontext für diese Datei nicht konfiguriert ist

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.

Einkaufszentrum für frische Lebensmittel kxmall - Miniprogramm + App + öffentliches Konto H5: kxmall - Einkaufszentrum für frische Lebensmittel + APP + Miniprogramm + H5. Es unterstützt auch das WeChat-Applet, H5, Android App und Apple App. Unterstützt Cluster-Bereitstellung und eigenständige Bereitstellung. Es kann in B2C-Einkaufszentren, O2O-Imbissbuden, Gemeinschaftssupermärkten und frischen Lebensmitteln [mit unterstützendem Fahrerliefersystem] verwendet werden. kxmall verwendet Uniapp-Codierung. Entwickelt mit Java, SpringBoot 2.1.x-Framework, MyBatis-plus-Persistenzschicht-Framework, Redis als Cache und MySql als Datenbank. Als Entwicklungssprache werden Frontend-Vuejs verwendet. https://gitee.com/zhengkaixing/kxmall

Supongo que te gusta

Origin blog.csdn.net/qq_38377190/article/details/131962355
Recomendado
Clasificación