Spring 集成mongodb

简述:项目采用spring-maven 集成mongodb

  1. pom.xml中引入对应maven包依赖
	        <dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>2.13.0-rc0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb</artifactId>
			<version>1.7.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb-cross-store</artifactId>
			<version>1.7.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb-log4j</artifactId>
			<version>1.7.1.RELEASE</version>
		</dependency>
  1. ApplicationContext.xml 加入mongodb的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/aop 
						http://www.springframework.org/schema/aop/spring-aop.xsd
						http://www.springframework.org/schema/context 
						http://www.springframework.org/schema/context/spring-context.xsd
						http://www.springframework.org/schema/data/mongo
         				http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
						http://www.springframework.org/schema/tx 
						http://www.springframework.org/schema/tx/spring-tx.xsd">
	
	
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>/WEB-INF/classes/dbconfig.properties</value>
				<value>/WEB-INF/classes/mongo.properties</value>
			</list>
		</property>
	</bean>
	 


	<!-- mongodb -->
    <!-- 获取配置资源 -->
    <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
        <constructor-arg name="username" value="${mongo.user}" />
        <constructor-arg name="password" value="${mongo.pwd}" />
    </bean>
    
       <mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}">
       <mongo:options 
            connections-per-host="${mongo.connectionsPerHost}" 
            threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" 
            connect-timeout="${mongo.connectTimeout}" 
            max-wait-time="${mongo.maxWaitTime}" 
            auto-connect-retry="${mongo.autoConnectRetry}" 
            socket-keep-alive="${mongo.socketKeepAlive}" 
            socket-timeout="${mongo.socketTimeout}" 
            slave-ok="${mongo.slaveOk}" 
            write-number="1" 
            write-timeout="0" write-fsync="true"/> 
	    </mongo:mongo>
	    <!-- 设置使用的数据库 名-->
	    <mongo:db-factory dbname="chatRecord" mongo-ref="mongo"/>
	    <!-- mongodb的模板 -->
	    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
	       <constructor-arg ref="mongo" />
	       <constructor-arg name="databaseName" value="chatRecord" />
	       <constructor-arg ref="userCredentials" />
	    </bean>
	
</beans>

3.mongo.properties配置文件

mongo.host=xxx.xxx.xxx.xxx
mongo.port=27017
mongo.user=zhangsan
mongo.pwd=123456
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.socketTimeout=1500
mongo.slaveOk=true
mongo.writeNumber=1
mongo.riteTimeout=0
mongo.writeFsync=true
  1. linux centos7 安装mongodb 官网下载 mongodb-linux-x86_64-rhel70-3.6.3.tgz,上传到服务器/usr/local文件夹下

  2. tar -zxvf mongodb-linux-x86_64-rhel70-3.6.3.tgz 解压到当前文件夹下 修改文件夹名称为mongodb3.6.3,进入到当前文件夹下 cd mongodb3.6.3

  3. mkdir logs / mkdir data 创建文件文件夹 和日志文件夹

  4. 新建mongodb.conf 文件,内容如下放置到bin 文件夹下

# data-path
dbpath=/usr/local/mongodb3.6.3/data/

# log-path
logpath=/usr/local/mongodb3.6.3/logs/mongodb.log

# port
port=27017

# work-type:
fork=true

#bind-ip
bind_ip=0.0.0.0

#auth
#auth=true
  1. 启动mongodb命令 :./mongod --config mongodb.conf
  2. 关闭命令:连接mongodb后 use admin 之后输入db.shutdownServer() 或者 kill -9 进程号 强制关闭
  3. 默认是用户验证是关闭的,当auth=true开启后,需要增加用户账号密码
  4. 设置用户账号密码 设置root用户 连接mongodb后 use admin
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root  这是超级管理员
readWrite  有读写权限
read    有读权限

db.createUser({user:"root",pwd:"123456",roles:[{"role":"root","db":"admin"}]})  

为其他库建立用户
use otherDB

db.createUser({user:"zhangsan",pwd:"123456",roles:[{"role":"readWrite","db":"otherDB"}]}) 
  1. 设置好发现,连接工具可以连接上,但是程序连接不上报错
org.springframework.data.mongodb.CannotGetMongoDbConnectionException: Failed to authenticate to database [otherDB], username = [zhangsan], password = [1****6]

解决方法在网上看到一个帖子:mongodb3.03以上开启认证,解决程序认证连接报错以及第三方客户端无法认证问题

  1. 常用命令
.查看加密方式
db.system.version.findOne({"_id" : "authSchema"})
5:SCRAM-SHA-1
3:MONGODB-CR

删除用户
db.dropUser("myuser") 

猜你喜欢

转载自my.oschina.net/u/3247574/blog/1793162