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-sync3.10.2 com.alibaba fastjson2.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的官方文档。



