Sprino boot配置MongoDB多数剧源

2019-08-16 09:19:18来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Sprino boot配置MongoDB多数剧源

关闭Mongo的自动化配置

因为项目需要配置MongoDB多数据源.
为了避免Spring boot自动化配置带来的影响,因此通过注解屏蔽MongoDB自动化配置.

@SpringBootApplication(exclude =
        {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
public class StatApplication {

    public static void main(String[] args) {

        SpringApplication.run(StatApplication.class, args);
    }
}

配置文件

个人倾向于使用uri方式初始化MongoClient,配置如下所示:

mongodb:
  meta:
    uri: mongodb://*:27017/admin?maxPoolSize=64
  stat:
    uri: mongodb://*:27017/stat?maxPoolSize=64

配置代码

@Data
@Configuration
public class MorphiaConfig {

    @Value("${mongodb.meta.uri}")
    private String metaUri;

    @Value("${mongodb.stat.uri}")
    private String statUri;

    @Bean("metaMongoClient")
    public MongoClient metaMongoClient() {
        final MongoClientOptions.Builder builder = MongoClientOptions.builder()
                .maxConnectionIdleTime(6000)
                .maxConnectionLifeTime(0);
        return new MongoClient(new MongoClientURI(metaUri, builder));
    }

    @Bean("statMongoClient")
    public MongoClient statMongoClient() {
        final MongoClientOptions.Builder builder = MongoClientOptions.builder()
                .maxConnectionIdleTime(6000)
                .maxConnectionLifeTime(0);
        return new MongoClient(new MongoClientURI(statUri, builder));
    }

    @Bean("metaDataStore")
    public Datastore metaDataStore(@Autowired @Qualifier("metaMongoClient") MongoClient mongoClient) {
        Morphia res = new Morphia();
        // 扫描实体类
        res.mapPackage("com.*.*.entity.meta");
        Datastore datastore = res.createDatastore(mongoClient, "metadata");
        // 建立索引
        datastore.ensureIndexes();
        return datastore;
    }

    @Bean("statDataStore")
    public Datastore statDataStore(@Autowired @Qualifier("statMongoClient") MongoClient mongoClient) {
        Morphia res = new Morphia();
        // 扫描实体类
        res.mapPackage("com.*.*.entity.stat");
        Datastore datastore = res.createDatastore(mongoClient, "stat");
        // 建立索引
        datastore.ensureIndexes();
        return datastore;
    }
}

通过以上代码,就可以建立两个独立的Datastore对象,可以通过对应的Bean name进行引入.

PS:
如果您觉得我的文章对您有帮助,可以扫码领取下红包或扫码支持(随意多少,一分钱都是爱),谢谢!

支付宝红包 支付宝 微信

原文链接:https://www.cnblogs.com/jason1990/p/11095530.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:从此Redis是路人

下一篇:泡一杯茶,学一学同异步