Created
August 16, 2019 03:36
-
-
Save huantt/026c4489670f1c94a2fb35ee21740387 to your computer and use it in GitHub Desktop.
Spring multi mongodb configuration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @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