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:
    如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢!
    程序员打怪之路

  • 相关阅读:
    循环语句
    流程控制
    特殊的赋值运算符
    位运算符
    运算符
    八种基本类型
    cmd基础命令
    springboot项目部署到tomcat步骤以及常见问题
    【算法问题】如何实现大整数相加
    【算法问题】删除k个数字后的最小值
  • 原文地址:https://www.cnblogs.com/jason1990/p/11095530.html
Copyright © 2011-2022 走看看