2018年8月8日 星期三

Multiple MongoDB connectors

pom.xml配置
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <version>2.0.4.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  9. <version>2.0.4.RELEASE</version>
  10. </dependency>

Application設定
  1. @SpringBootApplication(
  2. exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}
  3. )
  4. public class TestApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(TestApplication.class, args);
  7. }
  8. }
最重要的就是要設定 exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}

application.properties設定
  1. mongodb.connect1.uri=mongodb://自己的連線設定1
  2. mongodb.connect1.database=自己的database1
  3.  
  4. mongodb.connect2.uri=mongodb://自己的連線設定2
  5. mongodb.connect2.database=自己的database2

Configurer設定
  1. @Configuration
  2. public class TestConfigurer{
  3. @Bean
  4. @ConfigurationProperties(prefix = "mongodb.connect1")
  5. public MongoProperties getConnectionSetting1() {
  6. return new MongoProperties();
  7. }
  8.  
  9. @Bean
  10. @ConfigurationProperties(prefix = "mongodb.connect2")
  11. public MongoProperties getConnectionSetting2() {
  12. return new MongoProperties();
  13. }
  14.  
  15. @Bean(name="Template1")
  16. public MongoTemplate mongoTemplate1(){
  17. MongoProperties p = getConnectionSetting1();
  18. return genMongoTemplateWithMongoProperties(p);
  19. }
  20.  
  21. @Bean(name="Template2")
  22. public MongoTemplate mongoTemplate2(){
  23. MongoProperties p = getConnectionSetting2();
  24.  
  25. return genMongoTemplateWithMongoProperties(p);
  26. }
  27.  
  28. private MongoTemplate genMongoTemplateWithMongoProperties(MongoProperties p){
  29. MongoClientURI uri = new MongoClientURI(p.getUri());
  30. MongoClient client = new MongoClient(uri);
  31.  
  32. SimpleMongoDbFactory f = new SimpleMongoDbFactory(client, p.getDatabase());
  33. return new MongoTemplate(f);
  34. }
  35. }

Dao使用Template
  1. @Repository
  2. public class TestDao {
  3. @Autowired
  4. @Qualifier("Template1")
  5. private MongoTemplate mongoTemplate1;
  6.  
  7. @Autowired
  8. @Qualifier("Template2")
  9. private MongoTemplate mongoTemplate2;
  10. }

沒有留言:

張貼留言