springboot MongoDB 简单的多数据源的配置

目录

如何在springboot 里配置MongoDB  多数据源呢?

第一步:首先在yml文件里配置多个数据源的信息:

mongodb:
  test1:
    uri: mongodb://localhost
    database: test1
  test2:
    uri: mongodb://localhost
    database: test2
  test3:
    uri: mongodb://localhost
    database: test3
  test4:
    uri: mongodb://localhost
    database: test4

第二步: 定义一个自动装配的类 

@ConfigurationProperties(prefix = "mongodb") 这个注解是让springboot加载配置文件的时候找到是由哪个key下的values。

/**
 * @author yangyangchu
 * @desc MultipleMongoProperties
 * @date 13:03 2019/10/22
 */
@Data
@Component
@ConfigurationProperties(prefix = "mongodb")
class AutoMongoProperties {
    private MongoProperties test1= new MongoProperties();
    private MongoProperties test2= new MongoProperties();
    private MongoProperties test3= new MongoProperties();
    private MongoProperties test4= new MongoProperties();
}

MongoProperties 会自动填充上uri 和database 这2个字段 

然后开始初始化4个MongoDB的template

@Component
@Configuration
public class MultipleMongoConfig {

    @Autowired
    private AutoMongoProperties mongoProperties;

    @Primary
    @Bean(name = GlobalConstants.TEST1_MONGO_TEMPLATE)
    public MongoTemplate test1MongoTemplate() throws Exception {
        MongoProperties test1= mongoProperties.getTest1();
        MongoClient client = new MongoClientImpl(MongoClientSettings.builder()
                .applyConnectionString(new ConnectionString(test1.getUri())).build(), null);
        return new MongoTemplate(client, test1.getDatabase());
    }
}

此处只写一个 其他几个同理 重点是

@Qualifier(GlobalConstants.TEST2_MONGO_TEMPLATE) 给每个相同类型但是不同地址的template附上别名 默认其中一个为primary

现在已经有了4个模板了 在服务类中如果要使用其中一个就可以使用@Qualifier 指定需要加载的模板是哪一个,注意的是Qualifier里不要全部写大写,原因是springboot会使用全类名转驼峰做key来区别到底是哪个bean 说白了就是map<String,Object> 。

@Qualifier(GlobalConstants.TEST2_MONGO_TEMPLATE)
@Autowired
MongoTemplate test2MongoTemplate;

好了 到此多数据源配置已经完成。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值