springboot整合mongo多数据源

1
2
3
4
5
6
7
8
9
10
11
12
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/>
</parent>
 
<!--springboot整合mongodb-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

  

1
2
3
spring.data.mongodb.zero.uri=mongodb://test:test2021@127.0.0.1:27017/yourheart-test
 
spring.data.mongodb.first.uri=mongodb://test:test123@127.0.0.1:27019/yourheartTest

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.java.controller.mongo;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
 
import java.io.Serializable;
 
/**
 * 描述: DemoEntity
 *
 * @author yanpenglei
 * @create 2018-02-03 16:52
 **/
@Document(collection = "demo_collection")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DemoEntity implements Serializable {
 
    @Id
    private Long id;
    /**
     * 标题
     */
    private String title;
    /**
     * 内容
     */
    private String description;
 
    /**
     * 创建时间
     */
   private String createdTime;
    /**
     * 修改时间
     */
   private String updateTime;
    /**
     * 操作用户
     */
   private String user;
 
 
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.java.config;
 
import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
 
/**
 * @author yourheart
 * @Description
 * @create 2022-06-04 23:49
 */
@Configuration
public class MongoDatasourceProperties {
 
    /**
     * 连接MongoDB地址
     */
    @Value("${spring.data.mongodb.zero.uri}")
    private String uri;
 
 
    public MongoDbFactory mongoDbFactory(){
        MongoClientURI mongoclienturi = new MongoClientURI(uri);
        return new SimpleMongoDbFactory(mongoclienturi);
    }
 
    @Primary
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate((mongoDbFactory()));
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.java.config;
 
import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
 
/**
 * @author yourheart
 * @Description
 * @create 2022-06-06 21:01
 */
@Configuration
public class MongoFirstDatasource {
 
    /**
     * 连接MongoDB地址
     */
    @Value("${spring.data.mongodb.first.uri}")
    private String uri;
 
 
    public MongoDbFactory mongoDbFactory(){
        MongoClientURI mongoclienturi = new MongoClientURI(uri);
        return new SimpleMongoDbFactory(mongoclienturi);
    }
 
    @Bean(name = "firstMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate((mongoDbFactory()));
    }
}

 mongo多数据源测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.java.mongo;
 
import com.java.bean.HistoryPassword;
import com.java.controller.mongo.DemoEntity;
import com.java.controller.mongo.birth.BirthBean;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;
 
import javax.annotation.Resource;
import java.util.List;
 
/**
 * @author yourheart
 * @Description
 * @create 2022-06-06 21:15
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class MongoTest {
 
    @Autowired
    private MongoTemplate mongoTemplate;
 
    @Resource
    @Qualifier("firstMongoTemplate")
    private MongoTemplate firstMongoTemplate;
 
    @Test
    public void demoCollectionTest(){
 
        List<DemoEntity> all = mongoTemplate.findAll(DemoEntity.class);
 
        log.info("老库数据记录数:{}",all.size());
        all.forEach(demoEntity->{
            firstMongoTemplate.save(demoEntity);
 
        });
 
        List<DemoEntity>  newDatasource = firstMongoTemplate.findAll(DemoEntity.class);
        log.info("新库数据记录数:{}",newDatasource.size());
 
 
    }
}

  补充pom依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
 
 <!--引入junit单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
 
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>pingan</finalName>
    </build>

  

 

posted @   不忘初心2021  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示