6

Ho 2 database MongoDB collegati ad un'applicazione primavera avvio con 2 MongoTemplate-s:configurare repository multipla MongoDB con molla dati Mongo

mongoTemplate (il nome di fagioli di default, si collega al db di default)

mongoAppTemplate (si collega a un altro database in fase di esecuzione)

ho un sacco di MongoRepository-s che utilizzano mongoTemplate ma ho anche voglia di creare un po 'che avrebbe utilizzato mongoAppTemplate.

Come posso configurare 2 MongoRepository-s per utilizzare diversi MongoTemplate -s con la configurazione Java?

ho trovato un modo per farlo con XML (link sotto), ma ho molta voglia di tenere tutto annotazione basato

Spring-data-mongodb connect to multiple databases in one Mongo instance

+0

Con "keep it all annotation based", stai solo parlando di Java-config per le connessioni? O è il problema su come utilizzare le diverse connessioni nelle stesse o diverse classi? – woemler

risposta

7

L'idea di base è quella di separare la gerarchia pacchetto che contiene i repository in due diversi percorsi:

  • com.whatever.repositories.main pacchetto per le principali interfacce repository db
  • com.whatever.repositories.secondary pacchetto per le altre interfacce repository db

La configurazione XML dovrebbe essere qualcosa come:

<mongo:repositories base-package="com.whatever.repositories.main" mongo-template-ref="mongoTemplate"/> 
<mongo:repositories base-package="com.whatever.repositories.secondary" mongo-template-ref="mongoAppTemplate"/> 

EDIT

@EnableMongoRepositories annotazione è non @Repeatable, ma è possibile avere due classi @Configuration, ciascuna annotata con @EnableMongoRepositories al fine di raggiungere gli stessi utilizzando le annotazioni:

@Configuration 
@EnableMongoRepositories(basePackages = "com.whatever.repositories.main", mongoTemplateRef = "mongoTemplate") 
public class MainMongoConfig { 
    .... 
} 

@Configuration 
@EnableMongoRepositories(basePackages = "com.whatever.repositories.secondary", mongoTemplateRef = "mongoAppTemplate") 
public class SecondaryMongoConfig { 
    .... 
} 

E un terzo @Configuration classe annotata che @Import gli altri due.

+0

Lo stesso risultato può essere ottenuto attraverso le annotazioni? – Miciurash

+0

@orid Chiedendosi se questo approccio viene preso, l'aggiunta di una terza classe annotata '@ Configuration' è ridondante? Altrimenti saltare l'annotazione '@ Configurazione' nelle prime due classi e quindi consolidare in una terza classe –

+0

Come configurarla dinamicamente? Voglio dire, ho un elenco di modelli e voglio usarne uno in base a determinate condizioni. – s1moner3d

Problemi correlati