关于mongo多数据源的处理

关于mongo多数据源的处理

hello,各位小伙伴大家好,我是小王子~,一名JAVA搬砖程序员,今天给大家分享一下,在项目过程中碰到的一个小问题吧。

大家都知道mongo是一个非关系型数据库,在mongo里面我们通过指定的database去里面找到对应的collection,具体的话就是用到MongoTemplate模板对象去进行对mongo的crud操作了。

那么在使用过程中,碰到了mongo的多数据源操作,该如何处理呢?

1、定义对应的配置文件

首先我们在properties文件中去配置以下图片内容。
在这里插入图片描述
如图所示的内容就是两个数据源的配置了,

两个及以上的可以依次类推,比葫芦画瓢。

2、创建一个读取配置文件的类

@Component
//从配置文件中读取开头为mongodb的配置属性
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

    private MongoProperties primary = new MongoProperties();

    //如果有第三个就一次定义和进行set和get赋值处理,**比葫芦画瓢以此类推**

    private MongoProperties secondary = new MongoProperties();

    public MongoProperties getPrimary() {
        return primary;
    }

    public void setPrimary(MongoProperties primary) {
        this.primary = primary;
    }

    public MongoProperties getSecondary() {
        return secondary;
    }

    public void setSecondary(MongoProperties secondary) {
        this.secondary = secondary;
    }
}
// An highlighted block
@Component
//从配置文件中读取开头为mongodb的配置属性
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

    private MongoProperties primary = new MongoProperties();

    private MongoProperties secondary = new MongoProperties();
    
    //如果有第三个就一次定义和进行set和get赋值处理,**比葫芦画瓢以此类推**

    public MongoProperties getPrimary() {
        return primary;
    }

    public void setPrimary(MongoProperties primary) {
        this.primary = primary;
    }

    public MongoProperties getSecondary() {
        return secondary;
    }

    public void setSecondary(MongoProperties secondary) {
        this.secondary = secondary;
    }
}

3、创建数据源对应的mongotemplate配置类

下图是自定义的第二个数据源,然后其他数据源类似,比葫芦画瓢。

@Configuration
//代表的是我们自定义的mongoTemplate模板对象
@EnableMongoRepositories(mongoTemplateRef = SecondaryMongoConfig.MONGO_TEMPLATE)
public class SecondaryMongoConfig {
    public static final String MONGO_TEMPLATE = "secondaryMongoTemplate";
}
// An highlighted block
@Configuration
//代表的是我们自定义的mongoTemplate模板对象
@EnableMongoRepositories(mongoTemplateRef = SecondaryMongoConfig.MONGO_TEMPLATE)
public class SecondaryMongoConfig {
    public static final String MONGO_TEMPLATE = "secondaryMongoTemplate";
}

4、实现Bean注入自定义的mongoTemplate对象

最后一步,也是最重要的一步。

@Configuration
public class MultipleMongoConfig {

    //首先对我们创建的读取mongo配置文件的类进行注入
    @Autowired
    private MultipleMongoProperties mongoProperties;

	//一定要定义一个主数据源,也就是primary数据源,我们直接和配置文件保持一致即可。
    @Primary
    //这个注入的名称就是我们已经定义的mongoTemplate的name。
    @Bean(name = PrimaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate primaryMongoTemplate() throws Exception {
        MongoProperties primary = this.mongoProperties.getPrimary();
        String uri = primary.getUri();
        MongoClientURI mongoClientURI = new MongoClientURI(uri);
        //此方式是通过mongo的URI方式进行连接
        MongoClient mongoClient = new MongoClient(mongoClientURI);
        return new MongoTemplate(mongoClient, primary.getDatabase());
    }

	//注入其他数据源的操作。
    @Bean
    //定义其他数据源的名称。
    @Qualifier(SecondaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate secondaryMongoTemplate() throws Exception {
        MongoProperties secondary = this.mongoProperties.getSecondary();
        String uri = secondary.getUri();
        MongoClientURI mongoClientURI = new MongoClientURI(uri);
        //同样的,此方式是通过mongo的URI方式进行连接
        MongoClient mongoClient = new MongoClient(mongoClientURI);
        return new MongoTemplate(mongoClient, secondary.getDatabase());
    }
}
// An highlighted block
@Configuration
public class MultipleMongoConfig {

    //首先对我们创建的读取mongo配置文件的类进行注入
    @Autowired
    private MultipleMongoProperties mongoProperties;

	//一定要定义一个主数据源,也就是primary数据源,我们直接和配置文件保持一致即可。
    @Primary
    //这个注入的名称就是我们已经定义的mongoTemplate的name。
    @Bean(name = PrimaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate primaryMongoTemplate() throws Exception {
        MongoProperties primary = this.mongoProperties.getPrimary();
        String uri = primary.getUri();
        MongoClientURI mongoClientURI = new MongoClientURI(uri);
        //此方式是通过mongo的URI方式进行连接
        MongoClient mongoClient = new MongoClient(mongoClientURI);
        return new MongoTemplate(mongoClient, primary.getDatabase());
    }

	//注入其他数据源的操作。
    @Bean
    //定义其他数据源的名称。
    @Qualifier(SecondaryMongoConfig.MONGO_TEMPLATE)
    public MongoTemplate secondaryMongoTemplate() throws Exception {
        MongoProperties secondary = this.mongoProperties.getSecondary();
        String uri = secondary.getUri();
        MongoClientURI mongoClientURI = new MongoClientURI(uri);
        //同样的,此方式是通过mongo的URI方式进行连接
        MongoClient mongoClient = new MongoClient(mongoClientURI);
        return new MongoTemplate(mongoClient, secondary.getDatabase());
    }
}

Finally:以上是关于mongo多数据源的配置,如果有哪里没有提及到的地方,还请各位大佬补充和指教,作者在这里谢过各位大佬!

Everyone have a good dream,If you want,and do it,The dream will come true In the fruture.

Last but not least,
注:转载请联系作者!
WeChat:13160339561

mongo实验数据是指在MongoDB数据库中使用的用于实验目的的数据集。在进行实验时,通常需要一些数据来进行操作和分析,以验证特定的假设或优化算法。 mongo实验数据可以有不同的来源和形式。一种常见的方式是使用模拟数据生成器来创建数据,例如使用Python的Faker库,可以生成各种类型的虚拟数据,如姓名、地址、电话号码等。这样的数据可以用于模拟真实场景,进行性能测试或功能测试等。 另一种获取mongo实验数据的方式是使用公开可用的数据集。有很多开放的数据集可供使用,例如政府机构或科学领域的研究数据、社交媒体的用户行为数据等。这些数据可以通过网络下载或查询相关API来获取,然后导入到MongoDB数据库中进行实验。 对于一些特定的实验,可能需要根据研究需求,设计和构建自己的实验数据集。例如,针对某个特定领域的研究,可以通过收集相关数据、进行数据处理和清洗、定义数据模型和架构等步骤,构建适合实验需求的数据集。 在进行mongo实验数据时,通常需要考虑数据的规模、数据的结构、数据的完整性等因素。这些因素将会影响实验的结果和效果。 总之,mongo实验数据是进行mongo实验时使用的数据集,来源可以是模拟数据生成器、公开可用的数据集或自行构建的数据集。根据实验需求,选择合适的数据源和数据结构,进行实验操作和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值