1. 程式人生 > 實用技巧 >mongodb實現多資料來源 & 整合高版本mongodb3.11.2

mongodb實現多資料來源 & 整合高版本mongodb3.11.2

MongoDB Java基本操作
https://www.cnblogs.com/RealWorld/p/9209687.html

springboot2與mongodb整合
https://blog.csdn.net/p_programmer/article/details/89289067?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-7

springboot整合高版本mongodb3.11.2
https://blog.csdn.net/xjmfc/article/details/106929136?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

SpringBoot 2.2.0 SpringData MongoDB使用示例(一)
https://blog.csdn.net/pingpei1133/article/details/103104426?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.compare&depth_1-
utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.compare

mongodb實現多資料來源

https://www.cnblogs.com/mczhou2/p/12713042.html

______________________________________________________________________________________________________________________________________________

mongodb實現多資料來源

最近在開發過程中遇到一個需求,想要實現該需求需要把一個mongodb庫裡面的表&資料複製到另一個mongodb庫。首先需要做的一件事就是配置多資料來源,由於專案採用SpringBoot,所以配置多資料來源也是在這個框架基礎上的。話不多說,直接上程式碼

首先pom.xml需要引入如下配置

1 <dependency>
2    <groupId>org.springframework.boot</groupId>
3    <artifactId>spring-boot-configuration-processor</artifactId>
4    <optional>true</optional>
5 </dependency>
6 <dependency>
7    <groupId>org.springframework.boot</groupId>
8    <artifactId>spring-boot-starter-data-mongodb</artifactId>
9 </dependency>

分別定義三個類AbstractMongoConfig、PrimaryMongoConfig、SecondMongoConfig

 1 import com.mongodb.MongoClientURI;
 2 import org.springframework.data.mongodb.MongoDbFactory;
 3 import org.springframework.data.mongodb.core.MongoTemplate;
 4 import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
 5 
 6 /**
 7  * 描述
 8  *
 9  * @author mczhou2 2020/3/2010:50
10  */
11 public abstract  class AbstractMongoConfig {
12     //連線MongoDB地址
13     private String uri;
14     /**
15      * 獲取mongoDBTemplate物件
16      */
17     public abstract MongoTemplate getMongoTemplate() throws Exception;
18     /**
19      * 建立mongoDb工廠
20      */
21     public MongoDbFactory mongoDbFactory() throws Exception {
22         MongoClientURI mongoclienturi = new MongoClientURI(uri);
23         return new SimpleMongoDbFactory(mongoclienturi);
24     }
25     public String getUri() {
26         return uri;
27     }
28 
29     public void setUri(String uri) {
30         this.uri = uri;
31     }
32 }
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.core.MongoTemplate;

/**
 * 描述
 *
 * @author mczhou2 2020/3/20 10:51
 */
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.primary")
public class PrimaryMongoConfig extends AbstractMongoConfig{
    @Override
    @Primary
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate((mongoDbFactory()));
    }
}
 1 import org.springframework.boot.context.properties.ConfigurationProperties;
 2 import org.springframework.context.annotation.Bean;
 3 import org.springframework.context.annotation.Configuration;
 4 import org.springframework.context.annotation.Primary;
 5 import org.springframework.data.mongodb.core.MongoTemplate;
 6 
 7 /**
 8  * 描述
 9  *
10  * @author mczhou2 2020/3/2010:51
11  */
12 @Configuration
13 @ConfigurationProperties(prefix = "spring.data.mongodb.second")
14 public class SecondaryMongoConfig extends AbstractMongoConfig{
15 
16     @Override
17     @Primary
18     @Bean(name = "secondMongoTemplate")
19     public MongoTemplate getMongoTemplate() throws Exception {
20         return new MongoTemplate((mongoDbFactory()));
21     }
22 }

接下來啟動類的註解需要遮蔽之前的類,否在專案啟動報錯

 1 import org.springframework.boot.SpringApplication;
 2 import org.springframework.boot.autoconfigure.SpringBootApplication;
 3 import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
 4 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
 5 
 6 @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
 7 public class DemoApplication {
 8     public static void main(String[] args) {
 9         SpringApplication.run(DemoApplication.class,args);
10     }
11 }

至此,mongodb多資料來源就配置好了。這時候大家也許會問,前期準備工作好了,到底怎麼用?你確定你想知道,那下回來我手把手教你。