Platzierung von Repository implementieren Sie nicht in Basisverpackung
-
22-10-2019 - |
Frage
Ich habe meine benutzerdefinierte Repository -Implementierung nicht vom Domänenpaket getrennt. Und wahrscheinlich einige gemeinsame Schnittstellen. Zum Beispiel möchte ich Struktur wie
com
domain
Foo
FooRepository
common
Bar
persistence
BarImpl
interface FooRepository extends Bar{}
<jpa:repositories base-package="com.domain" /> // smt else?
Wie sollte ich das konfigurieren?
Lösung
Die automatische Abholung der Repository -Klasse funktioniert nur, wenn Sie sie im selben Paket platzieren und entweder das Standard -Postfix verwenden oder das Suffix definieren, um manuell zu verwenden. In Ihrem Szenario müssten Sie also a platzieren FooRepositoryImpl
in die domain
Paket. Sie können das Suffix mit dem anpassen repository-impl-postfix
Attribut. Wenn Sie die Implementierung in ein anderes Paket einfügen möchten, können Sie die benutzerdefinierte Implementierungsbean manuell verwenden fooRepositoryImpl
als Bean ID. Die Klasse kann dann in jedem gewünschten Paket wohnen.
Ich nehme das an Bar
ist die Schnittstelle, die die benutzerdefinierten Methodendeklarationen enthält. Tatsächlich empfehlen wir, sowohl die benutzerdefinierte Repository -Schnittstelle als auch die Implementierung in das gleiche Paket zu bringen, und es wird das Paket geschützt, um zu vermeiden, dass sie Clients einzeln zur Verfügung stehen. Auf diese Weise sehen alle Clients tatsächlich die einheitliche Repository -Schnittstelle, die Abfragemethoden und manuell implementierte.