springboot整合MongoDb多数据源

1、引入包

   
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.7.3</version>
        </dependency>

2、application.yml 配置文件

 

 

3、封装

复制代码

package com.sxsoft.config;

import org.springframework.boot.autoconfigure.mongo.MongoProperties;
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;


/**
* @program: sxsoft_operation_admin
* @ClassName DataSourceConfig
* @description:monogodb多数据源配置 非关系型数据库
* @author: 黄涛
* @create: 2022-10-08 15:41
* @Version 1.0
**/
@Configuration
public class MongoDBConfig {

@Bean(name = "oneMongoProperties")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.qitamongodbserver")
public MongoProperties masterMongoProperties() {
return new MongoProperties();
}

@Bean(name = "twoMongoProperties")
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.shuilimongodbserver")
public MongoProperties twoMongoProperties() {
return new MongoProperties();
}

@Bean(name = "threeMongoProperties")
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.zhujianmongodbserver")
public MongoProperties threeMongoProperties() {
return new MongoProperties();
}
}
 
复制代码

 

复制代码
package com.sxsoft.config;


import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
/**
 * @program: sxsoft_operation_admin
 * @ClassName DefaultMongoTemplateConf
 * @description: 其他工程mogodb,系统默认的
 * @author: 黄涛
 * @create: 2023-07-21 16:25
 * @Version 1.0
 **/
@Configuration
@EnableMongoRepositories(mongoTemplateRef = "mongoTemplate")
public class DefaultMongoTemplateConfig {

    private final MongoProperties mongoProperties;

    public DefaultMongoTemplateConfig(@Qualifier("oneMongoProperties") MongoProperties mongoProperties) {
        this.mongoProperties = mongoProperties;
    }

    @Bean
    @Primary
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoDatabaseFactory(mongoProperties));
    }

    @Bean(name = "oneMongoFactory")
    @Primary
    public MongoDatabaseFactory mongoDatabaseFactory(MongoProperties mongoProperties) {
        return new SimpleMongoClientDatabaseFactory(mongoProperties.getUri());
    }

}
复制代码

 

复制代码
package com.sxsoft.config;


import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;


/**
 * @program: sxsoft_operation_admin
 * @ClassName TwoMongoTemplateConf
 * @description: 水利工程mongodb
 * @author: 黄涛
 * @create: 2023-07-21 16:29
 * @Version 1.0
 **/
@Configuration
@EnableMongoRepositories(mongoTemplateRef = "twoMongo")
public class ShuiLiMongoTemplateConfig {

    private final MongoProperties mongoProperties;

    public ShuiLiMongoTemplateConfig(@Qualifier("twoMongoProperties") MongoProperties mongoProperties) {
        this.mongoProperties = mongoProperties;
    }

    @Bean(name = "twoMongo")
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoDatabaseFactory(mongoProperties));
    }

    @Bean(name = "twoMongoFactory")
    public MongoDatabaseFactory mongoDatabaseFactory(MongoProperties mongoProperties) {
        return new SimpleMongoClientDatabaseFactory(mongoProperties.getUri());
    }

}
复制代码

 

复制代码
package com.sxsoft.config;


import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;


/**
 * @program: sxsoft_operation_admin
 * @ClassName TwoMongoTemplateConf
 * @description: 住建mongodb
 * @author: 黄涛
 * @create: 2023-07-21 16:29
 * @Version 1.0
 **/
@Configuration
@EnableMongoRepositories(mongoTemplateRef = "threeMongo")
public class ZhuJianMongoTemplateConfig {
    private final MongoProperties mongoProperties;

    public ZhuJianMongoTemplateConfig(@Qualifier("threeMongoProperties") MongoProperties mongoProperties) {
        this.mongoProperties = mongoProperties;
    }

    @Bean(name = "threeMongo")
    public MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoDatabaseFactory(mongoProperties));
    }

    @Bean(name = "threeMongoFactory")
    public MongoDatabaseFactory mongoDatabaseFactory(MongoProperties mongoProperties) {
        return new SimpleMongoClientDatabaseFactory(mongoProperties.getUri());
    }
}
复制代码

 

 

 

3、使用

复制代码
1、使用默认的db
private MongoTemplate mongoTemplate;//系统默认的mogodb
@Autowired
public void setMongoTemplate(MongoTemplate mongoTemplate){
this.mongoTemplate = mongoTemplate;
}


2、使用第二个db
private MongoTemplate mongoTemplate;
@Autowired
@Qualifier("twoMongo")
public void setMongoTemplate(MongoTemplate mongoTemplate){
this.mongoTemplate = mongoTemplate;
}

2、使用第三个db
private MongoTemplate mongoTemplate;
@Autowired
@Qualifier("threeMongo")
public void setMongoTemplate(MongoTemplate mongoTemplate){
this.mongoTemplate = mongoTemplate;
}
 
复制代码

 

posted on   五官一体即忢  阅读(739)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示