栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot整合mongo

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot整合mongo

引言

springboot整合是采用原生的mongo-driver 来实现,可以动态链接多个库,无需关注整合springboot,只要自己实现springboot-starter。快速入门文档:http://mongodb.github.io/mongo-java-driver/3.11/driver/getting-started/quick-start/#mongodb-driver-quick-start 。介绍的非常详细,完全可以操作入门。

pom依赖

本文采用的版本号是3.10.2版本


        org.mongodb
        mongodb-driver-sync
        3.10.2
    

    
        com.alibaba
        fastjson
        2.0.1
    

只需要你在springboot框架中引入俩个依赖就可以操作,用原生的去操作更加灵活,个人不介意用mongo-template 用起来很不方便。

代码整合 配置文件参数

1、application.properties文件中加以下参数
server.port= 9009

mongo.properties.userName = bikeBos
#密码我这边不做展示了,自己的mongo 库的密码
mongo.properties.password = ****
mongo.properties.database = bikeBos

2、新增一个spring.factories文件
文件参数:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.example.demo.mongo.MongoConfig

代码实现

采用springboot-starter的形式的去进行实现

package com.example.demo.config;


import com.example.demo.dao.MongoDao;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


@Configuration
@EnableConfigurationProperties(MongoProperties.class)
public class MongoConfig implements ApplicationListener {

    @Resource
    private MongoProperties mongoProperties;

    @Resource
    private MongoDao mongoDao;

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        mongoDao.buildMongoClient(mongoProperties);
    }
}

加载的实体参数:

package com.example.demo.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties(prefix = "mongo.properties")
@Data
public class MongoProperties {

    private String userName;

    private String password;

    private String database;

    private String ip;

    private Integer port;

}

构建mongoClient 和 Dao提供对外的查询方法,这里举例根据主键查询,其余的api根据我上面提供的快速入门来进行封装。

package com.example.demo.dao;

import com.alibaba.fastjson.JSONObject;
import com.example.demo.config.MongoProperties;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.concurrent.ConcurrentHashMap;


@Service
public class MongoDao {

     //缓存client的数据源
     private final ConcurrentHashMap daoMap = new ConcurrentHashMap<>();

    
     public void buildMongoClient(MongoProperties mongoProperties) {
        String userName = mongoProperties.getUserName();
        String password = mongoProperties.getPassword();
        String database = mongoProperties.getDatabase();
         MongoCredential credential = MongoCredential.createCredential(userName, database, password.toCharArray());

         MongoClientSettings settings = MongoClientSettings.builder()
                 .credential(credential)
                 //.applyToSslSettings(builder -> builder.enabled(true))
                 .applyToClusterSettings(builder ->
                         //ip 是mongo服务器的主机
                         builder.hosts(Arrays.asList(new ServerAddress("127.0.0.1", 27017))))
                 .build();

         MongoClient mongoClient = MongoClients.create(settings);

         daoMap.put("test", mongoClient);
     }

    
     public String getDataByUk(String bikeNo) {
         Bson bson = Filters.eq("bikeNo", "2100009315");
         MongoClient mongoClient = daoMap.get("test");

         MongoCollection mongoCollection = mongoClient.getDatabase("bikeBos").getCollection("bik4c");
         FindIterable documents = mongoCollection.find(bson);

         String result = "";
         for (Document document : documents) {

             result = JSONObject.toJSONString(document);
             break;
         }
         return result;
     }
}

整合很简单,深入得继续去研究mongo的官方文档。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/851725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号