2011-09-04 1 views
1

Je ne vais pas séparer mon implémentation de référentiel personnalisé du package de domaine. Et, probablym quelques interfaces communes. Par exemple je veux avoir la structure commePlacement du référentiel impl dans pas de base-package

com 
     domain 
      Foo 
      FooRepository 
     common 
      Bar 
     persistence 
      BarImpl 

interface FooRepository extends Bar{} 

<jpa:repositories base-package="com.domain" /> // smt else? 

Comment je devrais config ceci?

+0

quel est le problème? Il devrait fonctionner – Bozho

Répondre

3

La collecte automatique de la classe de référentiel ne fonctionne que si vous la placez dans le même package et utilisez le suffixe par défaut ou définissez le suffixe à utiliser manuellement. Donc, dans votre scénario, vous devez placer un FooRepositoryImpl dans le package domain. Vous pouvez personnaliser le suffixe à l'aide de l'attribut repository-impl-postfix. Si vous souhaitez placer l'implémentation dans un autre package, vous pouvez déclarer le bean d'implémentation personnalisé manuellement en utilisant fooRepositoryImpl comme identifiant de bean. La classe peut alors résider dans n'importe quel paquet que vous voulez.

Je suppose que Bar est l'interface contenant les déclarations de méthodes personnalisées. En fait, nous recommandons de placer à la fois l'interface du référentiel personnalisé et l'implémentation dans le même package et de le protéger afin qu'il ne soit pas disponible individuellement pour les clients. De cette façon, tous les clients voient réellement l'interface du référentiel unifié contenant les méthodes de requête et celles implémentées manuellement.

+0

Merci pour la réponse. En fait, je ne crois pas que mettre l'implémentation personnalisée avec le référentiel de domaine est une bonne approche. Je crois qu'il devrait y avoir un autre moyen de déclarer la mise en œuvre. –