加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MongoDB与Spring的简单集成

发布时间:2020-12-13 12:39:51 所属栏目:百科 来源:网络整理
导读:《MongoDB与Spring的简单集成》要点: 本文介绍了MongoDB与Spring的简单集成,希望对您有用。如果有疑问,可以联系我们。 最近项目上有一个需求要用到MongoDB,之前小编从未用过,只是了解,所以使用期间走了些许弯路,借此跟大家分享一下. 引入 首先,跟尚未入门

《MongoDB与Spring的简单集成》要点:
本文介绍了MongoDB与Spring的简单集成,希望对您有用。如果有疑问,可以联系我们。

最近项目上有一个需求要用到MongoDB,之前小编从未用过,只是了解,所以使用期间走了些许弯路,借此跟大家分享一下.

MongoDB与Spring的简单集成

引入

首先,跟尚未入门的童鞋通俗地介绍一下什么是Spring,什么是MongoDB.

  • 什么是Spring?

  • 通俗来讲,Spring是用于盛装应用启动后所要用的到的对象的容器,便于对对象进行统一管理.

  • 什么是MongoDB?

  • MongoDB是一款NoSQL数据库,区别于存储形如Excel的表格数据的关系型数据库,NoSQL数据库一般储存的是对象

  • MongoDB的一个数据库中可以有若干个Collection(相当于关系型数据库的表),一个Collection中可以储存若干个Document(相当于关系型数据库的行)

  • MongoDB的每一个Document是一种与json神似的bson数据.

  • MongoDb目前不支持事务管理.

走过的弯路

我一开始的设计思路是:

  • 做一个配置文件用来存储Mongo的连接、认证等信息.

  • 做一个工具类来读取配置信息、创建客户端实例,并实现CRUD操作.

代码结构:

public final class MongoUtil {

private MongoUtil() {}

// 创建客户端

private static MongoClient createMongoDbClient() {

......

}

// 获取数据库

private static MongoDatabase getMongoDb() {

......

}

// 获取Collection

private static MongoCollection getCollection(String collectionName) {

......

}

// 以下是CRUD(增删改查)实现

......

}

诚然,这种做法是没有错的,毕竟MongoDB与Spring的集成也是基于以上方法来实现的,相当于是一种实现原理吧.

回头是岸

从了解MongoDb的特性及其数据存储结构到设计并实现该工具类用了差不多一天时间...

后来我猛地想起,或许Spring官方早有现成的Spring-MongoDb集成包呢?我查找了一下,答案是肯定的.

以下是MongoDB 3.0以上版本与Spring整合的示例:

pom.xml

<dependency>

<groupId>org.mongodb</groupId>

<artifactId>mongo-java-driver</artifactId>

<version>3.2.2</version>

</dependency>

<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-mongodb</artifactId>

<version>1.8.4.RELEASE</version>

</dependency>

spring.xml

<import resource="classpath:spring-mongo.xml" />

mongodb.properties

mongo.host=x.x.x.x

mongo.port=27017

mongo.credentials=testuser:123456@testdb

#mongo.dbName=testdb

#mongo.userName=testuser

#mongo.passWord=123456

mongo.options.connectionsPerHost=20

mongo.options.threadsAllowedToBlockForConnectionMultiplier=4

mongo.options.connectTimeout=1000

mongo.options.maxWaitTime=1500

mongo.options.socketKeepAlive=true

mongo.options.socketTimeout=1500

spring-mongo.xml

<!--连接池配置 -->

<mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}" credentials="${mongo.credentials}">

<mongo:client-options connections-per-host="${mongo.options.connectionsPerHost}"

threads-allowed-to-block-for-connection-multiplier="${mongo.options.threadsAllowedToBlockForConnectionMultiplier}"

connect-timeout="${mongo.options.connectTimeout}"

max-wait-time="${mongo.options.maxWaitTime}"

socket-keep-alive="${mongo.options.socketKeepAlive}"

socket-timeout="${mongo.options.socketTimeout}" />

</mongo:mongo-client>

<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->

<mongo:db-factory id="mongoDbFactory" mongo-ref="mongoClient" />

<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />

</bean>

</beans>

做完以上的配置之后,就可以利用上面配置的mongoTemplate进行MongoDB的CRUD操作了,例如:

public class UserDao {

@Autowired

private MongoOperations mongoOperations;

public void addUser(User user) {

mongoOperations.insert(user,"user");

}

....

}

主要是注入MongoOperations这个对象来使用其中已经实现的方法,因为MongoDB不支持事务控制,所以将其作为工具方法使用还是作为Dao使用都是可以的.


作者:头条号 | 程序界一帅

版权声明:转载请注明原始出处

编程之家PHP培训学院每天发布《MongoDB与Spring的简单集成》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读