Skip to content

Instantly share code, notes, and snippets.

@huantt
Created August 16, 2019 03:36
Show Gist options
  • Select an option

  • Save huantt/026c4489670f1c94a2fb35ee21740387 to your computer and use it in GitHub Desktop.

Select an option

Save huantt/026c4489670f1c94a2fb35ee21740387 to your computer and use it in GitHub Desktop.
Spring multi mongodb configuration
@CompileStatic
@Configuration
class MongoDBConfig {
@Value('${mongodb.uri.meta}')
private String metaURI
@Value('${mongodb.uri.sdk}')
private String sdkURI
private MongoMappingContext mongoMappingContext
{
mongoMappingContext = new MongoMappingContext()
this.mongoMappingContext.setFieldNamingStrategy(new SnakeCaseFieldNamingStrategy())
}
@Primary
@Bean(name = "advertiserMongoTemplate")
MongoTemplate advertiserMongoTemplate() throws Exception {
MongoDbFactory dbFactory = new SimpleMongoDbFactory(new MongoClientURI(this.metaURI))
return new MongoTemplate(dbFactory, this.getMongoConverter(dbFactory, this.mongoMappingContext))
}
@Bean(name = "campaignMongoTemplate")
MongoTemplate secondaryMongoTemplate() throws Exception {
MongoDbFactory dbFactory = new SimpleMongoDbFactory(new MongoClientURI(this.sdkURI))
return new MongoTemplate(dbFactory, this.getMongoConverter(dbFactory, this.mongoMappingContext))
}
@Bean(name = "publisherMongoTemplate")
MongoTemplate publisherMongoTemplate() throws Exception {
MongoDbFactory dbFactory = new SimpleMongoDbFactory(new MongoClientURI(this.sdkURI))
return new MongoTemplate(dbFactory, this.getMongoConverter(dbFactory, this.mongoMappingContext))
}
private MongoConverter getMongoConverter(MongoDbFactory dbFactory, MongoMappingContext mappingContext) {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(dbFactory)
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mappingContext)
mongoConverter.setTypeMapper(new DefaultMongoTypeMapper(null))
return mongoConverter
}
@Configuration
@EnableMongoRepositories(basePackages = "com.huantt.advertiser", mongoTemplateRef = "advertiserMongoTemplate")
class AdvertiserMongoConfig {
}
@Configuration
@EnableMongoRepositories(basePackages = "com.huantt.campaign", mongoTemplateRef = "campaignMongoTemplate")
class CampaignMongoConfig {
}
@Configuration
@EnableMongoRepositories(basePackages = "com.huantt.publisher", mongoTemplateRef = "publisherMongoTemplate")
class PublisherMongoConfig {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment