zoukankan      html  css  js  c++  java
  • SpringBoot配置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:
    如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!
    程序员打怪之路

  • 相关阅读:
    阿里云Ubuntu环境搭建Docker服务
    Cocos2d-x手机游戏开发中-组合动作
    Java中将时间戳转化为Date类型
    Ubuntu14.04+eclipse下cocos2d-x3.0正式版环境的搭建
    hdu 4901 The Romantic Hero(dp)
    scikit-learn:3.4. Model persistence
    桥接模式和NAT模式差别
    JavaScript入门:004—JS凝视的写法和基本运算符
    MySQL 创建用户 与 授权
    【观点见解】解读大数据的5个误区
  • 原文地址:https://www.cnblogs.com/jason1990/p/11095530.html
Copyright © 2011-2022 走看看