W naszym kodzie mamy kilka repozytoriów Spring JPA, po jednym dla każdej z naszych klas modeli. Są one zdefiniowane jako (gdzie <Name>
to nazwa naszej modalnej klasie):IntelliJ "Nie można zaprogramować." inspekcja "[...] więcej niż jeden komponent bean" dla repozytoriów Spring JPA
@Repository
public interface <Name>Repository implements JpaRepository<Name, Long> {
// …
}
Mamy wstrzyknąć je w naszych ziaren z wykorzystaniem @Inject
adnotacji z javax
:
@Inject
public void set<Name>Repository(<Name>Repository <name>Repo) {
this.<name>Repo = <name>Repo;
}
private <Name>Repository <name>Repo;
Problem jest, że IntelliJ podkreśla <name>Repo
w funkcji set<Name>Repository
jako błąd z tekstem:
Nie można zaprogramować. Istnieje więcej niż jedna fasola typu "Repozytorium". Fasola: Repo, Repo.
To tylko problem z inspekcją. Kompilacja i uruchamianie naszej aplikacji działa dobrze, ale staramy się, aby inspekcje w IJ były użyteczne, to duży problem. Ktoś ma sugestie, jak uzyskać zachowanie IntelliJ?
Dla odniesienia używamy Hibernate jako naszego dostawcy JPA, a źródło danych jest skonfigurowane w oknach narzędzi Database and Persistence.
Czy urządzenie IntelliJ powie Ci, które ziarna odpowiadają wstrzyknięciom? – geoand
Również w innej notatce nie potrzebujesz adnotacji '@ Repository'. Spring Data JPA utworzy komponent bean automatycznie, jeśli jest poprawnie skonfigurowany. – geoand
Tak, @geoand, odpowiadające im fasole to ' Repo' i' Repo'. Niezbyt pomocny. Jedyne co mogłem wymyślić to to, że IJ podniósł zarówno adnotację '@ Repository', jak i konfigurację wiosenną? –