Heim  >  Artikel  >  Java  >  Warum kann meine Spring-Anwendung mein UserService-Bean nicht finden?

Warum kann meine Spring-Anwendung mein UserService-Bean nicht finden?

DDD
DDDOriginal
2024-11-02 09:33:31530Durchsuche

Why Can't My Spring Application Find My UserService Bean?

Adressierungsproblem: „Feld erforderte eine Bean des Typs, die nicht gefunden werden konnte“

Die Fehlermeldung „Feld userService in main. „java.rest.UsersController benötigte eine Bean vom Typ „main.java.service.UserService“, die nicht gefunden werden konnte“ zeigt an, dass die Spring-Anwendung keine registrierte Bean vom Typ „main.java.service.UserService“ finden kann.

Ursache:

Dieses Problem tritt auf, wenn der Spring-Container die Bean-Definition für den angegebenen Typ nicht finden kann. Beans werden normalerweise mithilfe von Annotationen wie @Service definiert, aber wenn Sie MongoDB mit Spring verwenden, erweitern Sie normalerweise eine Repository-Schnittstelle von MongoRepository.

Lösungen:

Es gibt zwei Möglichkeiten Lösungen zur Behebung dieses Problems:

Lösung 1: Projektstruktur umstrukturieren

Verschieben Sie die UserService-Klasse in ein Paket, das vom Spring-Container gescannt wird. Standardmäßig scannt Spring alle Pakete unter dem Basispaket, in denen die Annotation @SpringBootApplication deklariert ist. Wenn sich Ihre Hauptklasse in com.example.something befindet, verschieben Sie UserService nach com.example.something.service.

Lösung 2: Verwenden von @ComponentScan

Fügen Sie Folgendes hinzu Zeile zu Ihrer Hauptklasse, in der die Annotation @SpringBootApplication deklariert ist:

<code class="java">@SpringBootApplication(scanBasePackages = {
    "com.example.something", // Your default scanned package
    "main.java.service"      // The package containing the UserService class
})</code>

Dadurch wird das Paket „main.java.service“ explizit in den Bean-Scan-Prozess einbezogen.

Das obige ist der detaillierte Inhalt vonWarum kann meine Spring-Anwendung mein UserService-Bean nicht finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn