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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top