SpringBoot mongodb 多数据源配置

在开发需求当中,遇到了一个需求,需要引入一个mongodb库,但是项目中已经引用了另外一个库,所以需要配置多个mongodb数据源。

项目中mongodb操作都是通过mongoTemplate 来实现的。所以我想到的方法便是根据不同的mongodb数据源配置生成不同的mongoTemplate,用不同的mongoTemplate对不同mongodb库进行操作。

实现起来其实很简单:

总共有三步:

1. 添加多个mongodb数据源到配置文件

spring.data.mongodb.uri=
spring.data.mongodb.other.uri=

2. 根据不同的mongodb数据源配置生成不同的mongoTemplate

@Configuration
public class MultipleMongoConfig {
    @Value("${spring.data.mongodb.uri}")
    private String primaryUri;
    @Value("${spring.data.mongodb.other.uri}")
    private String otherUri;

    @Primary
    @Bean(name = "primaryMongoTemplate")
    public MongoTemplate primaryMongoTemplate() throws Exception {
        SimpleMongoClientDbFactory simpleMongoClientDbFactory = new SimpleMongoClientDbFactory(primaryUri);
        return new MongoTemplate(simpleMongoClientDbFactory);
    }

    @Bean(name = "otherMongoTemplate")
    public MongoTemplate otherMongoTemplate() throws Exception {
        SimpleMongoClientDbFactory simpleMongoClientDbFactory = new SimpleMongoClientDbFactory(otherUri);
        return new MongoTemplate(simpleMongoClientDbFactory);
    }
}

3. 使用不同的mongoTemplate执行操作(mongodb基础的操作这里就不介绍了)

@Resource
private MongoTemplate mongoTemplate;
@Resource(name="otherMongoTemplate")
private MongoTemplate otherMongoTemplate;

...

List orderLog = otherMongoTemplate.find(query, OrderLog.class);

你可能感兴趣的:(mongodb,spring,boot,数据库)