配置文件:

# 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);
    }

}

 

posted on 2018-09-21 18:20  花开浪漫拾  阅读(495)  评论(0编辑  收藏  举报