MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment Spring Data sait-il avec quel magasin sauvegarder un référentiel si plusieurs modules sont utilisés ?

La décision de stocker un proxy créé pour une interface de référentiel Spring Data n'est prise qu'en raison de votre configuration. Supposons que vous ayez la configuration suivante :

@Configuration
@EnableJpaRepositories("com.acme.foo")
@EnableMongoRepositories("com.acme.foo")
class Config { }

Cela va exploser à un moment donné car les interfaces du package com.acme.foo sont tous deux détectés par les infrastructures MongoDB et JPA. Pour résoudre ce problème, la prise en charge de JavaConfig et XML vous permet de définir des filtres d'inclusion et d'exclusion afin que vous puissiez utiliser des conventions de dénomination, des annotations supplémentaires ou autres :

@Configuration
@EnableJpaRepositories(basePackages = "com.acme.foo", 
                       includeFilters = @Filter(JpaRepo.class))
@EnableMongoRepositories(base Packages = "com.acme.foo", 
                         includeFilters = @Filter(MongoRepo.class))
class Config { }

Dans ce cas, les deux annotations @JpaRepo et @MongoRepo (à créer par vous) seraient utilisés pour déclencher sélectivement la détection en annotant les interfaces de référentiel pertinentes avec eux.

Une véritable détection automatique est en quelque sorte impossible car il est difficile de dire quel magasin vous ciblez uniquement à partir de la déclaration de l'interface du référentiel et au moment où les définitions de bean sont créées, nous ne connaissons même pas d'autre infrastructure (un EntityManager ou similaire) pour le moment.