Springboot整合mongo
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版本
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.1</version>
</dependency>
只需要你在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;
/**
* @Author: xiaozhu13539
* @Date: 2022/4/27
*/
@Configuration
@EnableConfigurationProperties(MongoProperties.class)
public class MongoConfig implements ApplicationListener<ContextRefreshedEvent> {
@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;
/**
* @Author: xiaozhu13539
* @Date: 2022/4/27
*/
@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;
/**
* @Author: xiaozhu13539
* @Date: 2022/4/28
*/
@Service
public class MongoDao {
//缓存client的数据源
private final ConcurrentHashMap<String, MongoClient> daoMap = new ConcurrentHashMap<>();
/**
* client
* @param mongoProperties
*/
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);
}
/**
* 获取注解
* @param bikeNo
* @return
*/
public String getDataByUk(String bikeNo) {
Bson bson = Filters.eq("bikeNo", "2100009315");
MongoClient mongoClient = daoMap.get("test");
MongoCollection<Document> mongoCollection = mongoClient.getDatabase("bikeBos").getCollection("bik4c");
FindIterable<Document> documents = mongoCollection.find(bson);
String result = "";
for (Document document : documents) {
result = JSONObject.toJSONString(document);
break;
}
return result;
}
}
整合很简单,深入得继续去研究mongo的官方文档。
更多推荐
所有评论(0)