业务需要,某个功能模块需要从原先的MySQL关系型数据库转换为非关系型的NoSQL数据库MongoDB。
之前的项目使用的是传统的SSH架构(Spring+SpringMVC+Hibernate),不像现在流行的SpringBoot,集成MongoDB还是需要做一些配置才能完成。
配置过程中最需要注意的一点在于相关依赖的版本。
Spring集成MongoDB的依赖包
需要依赖两个包:
mongo-java-driver
这是一个驱动包,封装了MongoDB的一些类型和操作接口,譬如BasicDBObject,BasicDBList,MongoClient等。这个包不是Spring框架下的,而是Java对MongoDB进行操作可以直接使用的一个包;
spring-data-mongodb
这是一个Spring框架下的包,针对MongoDB的操作进行了封装,属于Spring Data的一个子项目,提供了对MongoDB进行CRUD的统一接口,可以通过继承MongoRepository来使用JPA的方式进行操作。另外也可以通过MongoTemplate等接口来进行操作。这是在mongo-java-driver之上的一层封装。
包依赖关系
由上图可见,spring-data-mongo依赖于mongo-java-driver,另外还依赖spring-data-commons。
MongoDB相关配置
首先配置一下MongoDB的相关属性,譬如数据库URL以及端口等等。
mongo.host=localhost
mongo.port=27017
mongo.connectionsPerHost=100
mongo.minConnectionsPerHost=10
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.maxWaitTime=5000
mongo.maxConnectionIdleTime=10000
mongo.maxConnectionLifeTime=100000
mongo.connectTimeout=1000
mongo.socketTimeout=1500
mongo.socketKeepAlive=true
mongo.serverSelectionTimeout=30000
这里设置了Mongo的一些相关属性,譬如主机,端口,超时时间等等。
这些属性要在Spring的配置文件中使用,从而进行集成。如果直接使用MongoClient,MongoCollection等接口进行操作,不通过Spring进行集成,则可以直接在代码中指定,无需增加这些properties配置文件。
applicationcontext配置
接着要进行Spring的集成,通过在applicationcontext.xml中进行相关配置。
①首先引入mongo的命名空间
xmlns:mongo=