zoukankan      html  css  js  c++  java
  • spring boot MongoDb配置和多数据源

    配置文件:

    # MongoDB配置项
    mongodb.base.host: 192.168.1.204
    mongodb.base.port: 27017
    mongodb.base.database: xxx
    mongodb.base.username: xxxx
    mongodb.base.password: 18148E275C234393

    java配置:

    package com.test.framework.mongodb.base.config;
    
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.autoconfigure.mongo.MongoProperties;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.data.mongodb.MongoDbFactory;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
    
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.MongoCredential;
    import com.mongodb.ServerAddress;
    
    @Configuration
    public class MongodbBaseConfig {
    
        public static final String mongoPropertiesBase = "mongoPropertiesBase";
        public static final String mongoClientBase = "mongoClientBase";
        public static final String mongoDbFactoryBase = "mongoDbFactoryBase";
        public static final String mongoTemplateBase = "mongoTemplateBase";
    
        @Bean(name = mongoPropertiesBase)
        @ConfigurationProperties(prefix = "mongodb.base")
        @Primary
        public MongoProperties setMongoProperties() {
            return new MongoProperties();
        }
    
        @Bean(name = mongoClientBase)
        @Primary
        public MongoClient setMongoClient(@Qualifier(mongoPropertiesBase) MongoProperties mongoProperties) {
            // MongoDB地址
            ServerAddress serverAddress = new ServerAddress(mongoProperties.getHost(), mongoProperties.getPort());
    
            // 连接认证(用户名,数据库,密码 )
            MongoCredential mongoCredential = MongoCredential.createCredential(mongoProperties.getUsername(),
                    mongoProperties.getDatabase(), mongoProperties.getPassword());
    
            // 连接选项
            MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder().build();
    
            // new MongoClientOptions.Builder()
            // .connectTimeout(Integer.parseInt(connectTimeout)) // 链接超时时间
            // .socketTimeout(Integer.parseInt(socketTimeout)) // read数据超时时间
            // .readPreference(ReadPreference.secondary()) // 最近优先策略
            // //.autoConnectRetry(false) // 是否重试机制
            // .connectionsPerHost(Integer.parseInt(perHost)) // 每个地址最大请求数
            // .maxWaitTime(Integer.parseInt(waitTime)) // 长链接的最大等待时间
            // .threadsAllowedToBlockForConnectionMultiplier(Integer.parseInt(connectionMultiplier)).build();
            // // 一个socket最大的等待请求数
            // //.writeConcern(WriteConcern.NORMAL).build();
    
            return new MongoClient(serverAddress, mongoCredential, mongoClientOptions);
        }
    
        @Bean(name = mongoDbFactoryBase)
        @Primary
        public MongoDbFactory setMongoDbFactory(@Qualifier(mongoClientBase) MongoClient mongoClient,
                @Qualifier(mongoPropertiesBase) MongoProperties mongoProperties) throws Exception {
    
            return new SimpleMongoDbFactory(mongoClient, mongoProperties.getDatabase());
        }
    
        @Primary
        @Bean(name = mongoTemplateBase)
        public MongoTemplate setMongoTemplate(@Qualifier(mongoDbFactoryBase) MongoDbFactory mongoDbFactory)
                throws Exception {
            return new MongoTemplate(mongoDbFactory);
        }
    
    }
  • 相关阅读:
    Spring Boot 的单元测试和集成测试
    Containers vs Serverless:你选择谁,何时选择?
    Java13新特性
    Java中创建对象的5种方法
    最好的重试是指数后退和抖动
    杂谈:面向微服务的体系结构评审中需要问的三个问题
    使用Quarkus在Openshift上构建微服务的快速指南
    Java EE—最轻量级的企业框架?
    AQS机制
    JVM-内存模型
  • 原文地址:https://www.cnblogs.com/wulm/p/9687927.html
Copyright © 2011-2022 走看看