SpringBoot + MongoDB 分片集羣的集成

簡介

本文主要講在 mongodb 在分片集羣的狀況下,springboot如何進行集成。java

默認讀者熟悉 maven、springboot、mongodbspring

Springboot+Mongodb集成

引入依賴

<!-- mongodb -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

定義配置文件

自定義配置文件,多數據源的mongodb

topinfo:
   mongodb:
      base:
         #  mongos的地址和端口
         uri: mongodb://192.168.90.225:20000,192.168.90.226:20000,192.168.90.227:20000
         database: topinfo_base
      warn:
         #  mongos的地址和端口
         uri: mongodb://192.168.90.225:20000,192.168.90.226:20000,192.168.90.227:20000
         database: topinfo_warn

配置父類

package com.topinfo.ci.dataex.config;

import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Description: mongo配置類 - 父類
 * @Author:楊攀
 * @Since:2019年7月8日上午11:19:39
 */
public class MongoConfiguration {

    private String uri;

    private String database;

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public String getDatabase() {
        return database;
    }

    public void setDatabase(String database) {
        this.database = database;
    }

}

基礎配置類

package com.topinfo.ci.dataex.config;

import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Description: mongo配置類
 * @Author:楊攀
 * @Since:2019年7月8日上午11:19:39
 */
@ConfigurationProperties(prefix = "topinfo.mongodb.base")
@Component
public class MongoBaseConfiguration extends MongoConfiguration {
 
    

}

預警配置類

package com.topinfo.ci.dataex.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Description: mongo配置類
 * @Author:楊攀
 * @Since:2019年7月8日上午11:19:39
 */
@ConfigurationProperties(prefix = "topinfo.mongodb.warn")
@Component
public class MongoWarnConfiguration extends MongoConfiguration {
 
     
}

mongo配置類

package com.topinfo.ci.dataex.config;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.MongoClientURI;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;

/**
 * @Description: mongoConfig
 * @Author:楊攀
 * @Since:2019年7月8日上午11:22:57
 */
@Configuration
public class MongoConfig {

    @Autowired
    private MongoBaseConfiguration baseConfiguration;
    
    @Autowired
    private MongoWarnConfiguration warnConfiguration;
    
    
    /**
     *@Description: MongoDbFactory
     *@Author:楊攀
     *@Since: 2019年7月8日下午4:02:33
     *@param config
     *@return
     *@throws Exception
     */
    @Bean
    public MongoDbFactory mongoDbFactory(MongoConfiguration  config) throws Exception {
        MongoClientURI uri = new MongoClientURI(config.getUri());
        MongoClient mongoClient = new MongoClient(uri);
        
        MongoDbFactory dbFactory = new SimpleMongoDbFactory(mongoClient, config.getDatabase());
        return dbFactory;
    }
    
    @Bean(name="baseMongoTemplate")
    public MongoTemplate baseMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory(baseConfiguration));
    }
    
    
    @Bean(name="warnMongoTemplate")
    public MongoTemplate warnMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory(warnConfiguration));
    }
}

dao層的使用

package com.topinfo.ci.dataex.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
import com.topinfo.ci.dataex.bean.UserBean;
import com.topinfo.ci.dataex.dao.TestDao;

@Component
public class TestDaoImpl implements TestDao {

    @Autowired
    @Qualifier("baseMongoTemplate")
    private MongoTemplate mongoTemplate;

    @Override
    public void saveUser(UserBean user) {
        String userJson = JSON.toJSONString(user);
        mongoTemplate.save(userJson, "tx");
    }

    @Override
    public void saveUserList(List<UserBean> userList) {
        // TODO Auto-generated method stub

    }

    @Override
    public void updateUser(UserBean user) {
        // TODO Auto-generated method stub

    }

    @Override
    public void deleteUserById(Long id) {
        // TODO Auto-generated method stub

    }

}

以上是 集成的主要配置類, server層直接調用到便可實現。 千萬別謝我!!!O(∩_∩)O哈哈~json

相關文章
相關標籤/搜索