Kann ich eine Bean, die in einem abhängigen Bibliotheksglas vorhanden ist, nicht @Autowire?

8

Ich habe eine Spring-Boot-Anwendung (Y), die auf einer Reihe von Bibliotheksdateien basiert, die als x.jar gepackt sind und als Abhängigkeit in der pom.xml der Anwendung Y erwähnt werden.

x.jar hat eine Bean namens (User.java) Anwendung Y hat eine Java-Klasse namens (Department.java)

Während ich versuche, eine Instanz von User.java in Department.java automatisch zu starten, erhalte ich den folgenden Fehler

Kann ich eine Bean, die in einem abhängigen Bibliotheksglas vorhanden ist, nicht @Autowire?

  

Feld konnte nicht automatisch gestartet werden: privater com.User-Benutzer; verschachtelte Ausnahme ist   org.springframework.beans.factory.NoSuchBeanDefinitionException: Nein   Qualifizierendes Bean vom Typ [com.User] gefunden für Abhängigkeit: erwartet um   mindestens eine Bean, die sich als Autowire-Kandidat dafür qualifiziert   Abhängigkeit. Abhängigkeitsanmerkungen:   {@ org.springframework.beans.factory.annotation.Autowired (erforderlich = true)}

     

Kein qualifizierendes Bean vom Typ [com.User] für Abhängigkeit gefunden: erwartet   mindestens 1 Bean, die sich als Autowire-Kandidat qualifiziert   Abhängigkeit. Abhängigkeitsanmerkungen:   {@ org.springframework.beans.factory.annotation.Autowired (erforderlich = true)} **

Hier ist der Code in der Spring Boot-Anwendung 'Y'

%Vor%

Hier ist der Code von User.java in der Bibliothek x.jar

%Vor%

Dies ist der Abhängigkeitseintrag für x.jar in der pom.xml der Anwendung Y

%Vor%

Dies ist die Hauptklasse in der Anwendung 'Y'

%Vor%

Sowohl Abteilung als auch Benutzer sind unter verschiedenen Paketen.

Lösung: Ich habe die folgenden 2 Schritte angewendet und jetzt funktioniert der Autowiring einwandfrei.

Schritt 1: Die folgende Klasse in der JAR-Datei hinzugefügt

%Vor%

Schritt 2: Diese Konfigurationsklasse wurde in die Hauptklasse des Y-Projekts importiert

%Vor%     
yathirigan 12.06.2015, 06:06
quelle

1 Antwort

7

Sie müssten die Paketnamen Ihrer Hauptklasse und der Benutzerklasse hinzufügen, um 100% sicher zu sein, aber wahrscheinlich liegt die Benutzerklasse nicht im selben Paket (oder einem Unterpaket) Ihrer Hauptklasse. Dies bedeutet, dass das Scannen von Komponenten es nicht aufnimmt.

Sie können den Frühling zwingen, andere Pakete wie folgt anzusehen:

%Vor%     
Wim Deblauwe 12.06.2015, 06:27
quelle

Tags und Links