2016-06-20 8 views
2

Ich habe ein seltsames Problem festgestellt. Ich habe den Eindruck, dass beim Scannen von Komponenten die Unterpakete rekursiv gescannt werden, wenn ein Paket der obersten Ebene zum Scannen angegeben wird.Component Scan nicht Scannen von Unterpaketen

Meine Repositorys und Entities sind die Maven-Abhängigkeit des Projekts. Sie leben unter dem Paketnamen com.foo.bar.xyz und meine Anwendungskonfiguration befindet sich unter dem Paket com.foo.bar. Wenn ich @ComponentScan(basePackages = "com.foo.bar") schreibe, gibt es zusammen mit einen Fehler, dass die Repository-Bean nicht gefunden wird.

Wenn ich jedoch ein Top-Level-Repository-Paket wie @EnableJpaRepositories(basePackages = com.foo.bar.xyz) zusammen mit Komponenten-Scan wie oben angegeben, erkennt es das Repository gut.

Nun geschieht dies nur, weil die Repositorys und Entitäten als maven-Abhängigkeit injiziert werden? Durchsucht der rekursive Teil des Komponentenscans die Unterpakete oder Unterverzeichnisse?

Antwort

3

Jetzt geschieht dies nur, weil die Repositorys und Entitäten als Maven-Abhängigkeit injiziert werden?

  • Nein, es ist nicht

Das Gleiche gilt für die rekursive Teil der Komponente Scan scannt die Unterpakete oder Unterverzeichnisse?

  • Ja Komponente Scan durchsucht, rekursiv in Unterpakete

Um hier zu erarbeiten @ComponentScan beabsichtigt ist, alle Klassen gesucht, die @Component oder deren Untertypen wie @Controller während Spring Data JPA zu ermöglichen, indem die mit Anmerkungen versehen PersistenceContext-Klasse mit der Annotation und zum Konfigurieren der Basispakete, die überprüft werden, wenn Spring Data JPA Implementierungen für die Repository-Schnittstellen erstellt. Daher müssen die Basispaketinformationen sowohl für @ComponentScan als auch für @EnableJpaRepositories

deklariert werden