MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

In che modo Spring Data sa con quale archivio eseguire il backup di un repository se vengono utilizzati più moduli?

La decisione di archiviare un proxy creato per un'interfaccia del repository Spring Data viene presa solo a causa della configurazione della configurazione. Supponiamo di avere la seguente configurazione:

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

Questo ad un certo punto esploderà quando le interfacce nel pacchetto com.acme.foo sono entrambi rilevati dall'infrastruttura MongoDB e JPA. Per risolvere questo problema, sia JavaConfig che il supporto XML consentono di definire filtri di inclusione ed esclusione in modo da poter utilizzare convenzioni di denominazione, annotazioni aggiuntive o simili:

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

In questo caso, le due annotazioni @JpaRepo e @MongoRepo (da creare da te) verrebbe utilizzato per attivare selettivamente il rilevamento annotando con esse le interfacce del repository pertinenti.

Un vero rilevamento automatico è quasi impossibile in quanto è difficile dire a quale negozio stai prendendo di mira esclusivamente dalla dichiarazione dell'interfaccia del repository e nel momento in cui vengono create le definizioni dei bean non sappiamo nemmeno di altre infrastrutture (un EntityManager o simili) ancora.