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!