irpas技术客

Springboot整合mongo_金角_kane_springboot整合mongo

irpas 4753

引言

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的官方文档。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #springboot #整合mongo