Ich arbeite mit Spring Boot + Spring Data JPA und stehe vor diesem Problem, wenn ich versuche, eine Klasse einzufügen, die CrudRepository erweitert:
Verursacht durch: org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'topicRepository': Übereinstimmender Konstruktor Konnte nicht aufgelöst werden (Hinweis: Geben Sie für einfache Parameter zur Vermeidung von Mehrdeutigkeiten
Repository-Klasse:
public interface TopicRepository extends CrudRepository<Topic, Integer> {}
Serviceklasse:
@Service
public class TopicService {
@Autowired
private TopicRepository topicRepository;
}
Irgendwelche Vorschläge?
Ich hatte das gleiche Problem und habe es durch den Wechsel der Spring Boot-Version behoben. Das Ändern der JPA-Versionen von Spring Data hat nichts bewirkt (dies ist der Ort, an dem der Fehler angenommen wurde). Ich denke, es gibt einen Fehler in der Spring Boot-Version 1.5.1. Ich habe wieder auf Version 1.4.3 gewechselt und der Fehler war weg. Ich habe keine nachfolgenden/anderen Versionen ausprobiert, so dass Sie möglicherweise nur mit Ihren Abhängigkeiten und deren Versionen experimentieren müssen.
Für den Datensatz können Sie Ihre Serviceklasse mit @Repository
kommentieren lassen. Es sollte keinen Unterschied machen. Ich habe diese Apps auf dieselbe Weise mit dem Service/Dao-Muster eingerichtet, und die Anmerkungen waren noch nie so wählerisch. Hoffentlich kann dies anderen helfen, deren Spring Boot-Entwicklungsablauf plötzlich einen Fehler auslöst!
Welche Versionen von Spring Data Commons und Spring Data Jpa verwenden Sie? Ich bin gerade mit spring-data-commons 1.13.x mit spring-data-jpa 1.10.x darauf gestoßen. Das Aktualisieren von spring-data-jpa auf 1.11.x hat das Problem für mich behoben.
Hatte das gleiche Problem am 1.5.2. Ein Upgrade auf 1.5.5 hat das Problem behoben.
Ich hatte das gleiche Problem, nachdem ich Spring Boot auf 1.5.4 aktualisiert hatte.
Ich benutze auch spring-data-envers
, das in Version 1.0.4 war. Ein Upgrade auf 1.4.1 hat das Problem behoben.
Ich hoffe es hilft jemandem :)
Sie können Applicationcontext verwenden, um das Repository in dieses Referenz-TopicRepository einzufügen. Sie deklarieren den Applicationcontext nur in der @ rest-Controller-Klasse. Dann übergeben Sie dies an die Serviceklasse, die Parms durch Konstruktor nehmen soll. Ex- public TopicService(Applicationcontext ctx) {this.topicRepository =context.getBean(TopicRepository.class); }
Stelle sicher:
1) TopicRepository wird mit @Repository
kommentiert.
2) Sie haben die Scan-Pakete konfiguriert:
<jpa:repositories base-package="mypkg.repositories"></jpa:repositories>